notmuch.el: Add support for viewing MIME-encoded parts (with 'v').
[notmuch] / notmuch.el
index e70a1fc58919564576678959f5c1ee39ddafb4a4..7e95f95671801e0c2e1c75c47d3bfddd8b792489 100644 (file)
@@ -20,6 +20,7 @@
 ; Authors: Carl Worth <cworth@cworth.org>
 
 (require 'cl)
+(require 'mm-view)
 
 (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 "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)
@@ -223,6 +225,18 @@ buffer."
   (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)