]> git.cworth.org Git - notmuch/blobdiff - emacs/notmuch-show.el
emacs: add duplicate support to notmuch-show-view-raw-message
[notmuch] / emacs / notmuch-show.el
index 527db4bbc0ff346572bdf34f97830264ac7dad38..a66506780005fb1940dfa6e229b339c0f16b1119 100644 (file)
@@ -1813,7 +1813,7 @@ current thread."
 
 (defun notmuch-show-get-filename ()
   "Return the filename of the current message."
-  (let ((duplicate (or (notmuch-show-get-prop :duplicate) 1)))
+  (let ((duplicate (notmuch-show-get-duplicate)))
     (nth (1- duplicate) (notmuch-show-get-prop :filename))))
 
 (defun notmuch-show-get-header (header &optional props)
@@ -1826,6 +1826,10 @@ current thread."
 (defun notmuch-show-get-date ()
   (notmuch-show-get-header :Date))
 
+(defun notmuch-show-get-duplicate ()
+  ;; if no duplicate property exists, assume first file
+  (or (notmuch-show-get-prop :duplicate) 1))
+
 (defun notmuch-show-get-timestamp ()
   (notmuch-show-get-prop :timestamp))
 
@@ -2139,12 +2143,16 @@ to show, nil otherwise."
   "View the original source of the current message."
   (interactive)
   (let* ((id (notmuch-show-get-message-id))
-        (buf (get-buffer-create (concat "*notmuch-raw-" id "*")))
+        (duplicate (notmuch-show-get-duplicate))
+        (args (if (> duplicate 1)
+                  (list (format "--duplicate=%d" duplicate) id)
+                (list id)))
+        (buf (get-buffer-create (format "*notmuch-raw-%s-%d*" id duplicate)))
         (inhibit-read-only t))
     (pop-to-buffer-same-window buf)
     (erase-buffer)
     (let ((coding-system-for-read 'no-conversion))
-      (notmuch--call-process notmuch-command nil t nil "show" "--format=raw" id))
+      (apply #'notmuch--call-process notmuch-command nil t nil "show" "--format=raw" args))
     (goto-char (point-min))
     (set-buffer-modified-p nil)
     (setq buffer-read-only t)