notmuch.el: Add support for viewing MIME-encoded parts (with 'v').
authorCarl Worth <cworth@cworth.org>
Sat, 14 Nov 2009 16:57:38 +0000 (08:57 -0800)
committerCarl Worth <cworth@cworth.org>
Sat, 14 Nov 2009 16:57:38 +0000 (08:57 -0800)
Currently just supports viewing all MIME parts in the message. There's
not yet support for selecting and viewing individual parts, but that
should be easy to add from here, (now that we've found
mm-display-parts to do all the heavy lifting).

notmuch.el

index e70a1fc58919564576678959f5c1ee39ddafb4a4..7e95f95671801e0c2e1c75c47d3bfddd8b792489 100644 (file)
@@ -20,6 +20,7 @@
 ; Authors: Carl Worth <cworth@cworth.org>
 
 (require 'cl)
 ; Authors: Carl Worth <cworth@cworth.org>
 
 (require 'cl)
+(require 'mm-view)
 
 (defvar notmuch-show-mode-map
   (let ((map (make-sparse-keymap)))
 
 (defvar notmuch-show-mode-map
   (let ((map (make-sparse-keymap)))
@@ -44,6 +45,7 @@
     (define-key map "q" 'kill-this-buffer)
     (define-key map "r" 'notmuch-show-reply)
     (define-key map "s" 'notmuch-show-toggle-signatures-visible)
     (define-key map "q" 'kill-this-buffer)
     (define-key map "r" 'notmuch-show-reply)
     (define-key map "s" 'notmuch-show-toggle-signatures-visible)
+    (define-key map "v" 'notmuch-show-view-all-mime-parts)
     (define-key map "w" 'notmuch-show-view-raw-message)
     (define-key map "x" 'kill-this-buffer)
     (define-key map "+" 'notmuch-show-add-tag)
     (define-key map "w" 'notmuch-show-view-raw-message)
     (define-key map "x" 'kill-this-buffer)
     (define-key map "+" 'notmuch-show-add-tag)
@@ -223,6 +225,18 @@ buffer."
   (interactive)
   (view-file (notmuch-show-get-filename)))
 
   (interactive)
   (view-file (notmuch-show-get-filename)))
 
+(defun notmuch-show-view-all-mime-parts ()
+  "Use external viewers (according to mailcap) to view all MIME-encoded parts."
+  (interactive)
+  (save-excursion
+    (let ((filename (notmuch-show-get-filename)))
+      (switch-to-buffer (generate-new-buffer (concat "*notmuch-mime-"
+                                                    filename
+                                                    "*")))
+      (insert-file-contents filename nil nil nil t)
+      (mm-display-parts (mm-dissect-buffer))
+      (kill-this-buffer))))
+
 (defun notmuch-show-reply ()
   "Begin composing a reply to the current message in a new buffer."
   (interactive)
 (defun notmuch-show-reply ()
   "Begin composing a reply to the current message in a new buffer."
   (interactive)