]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-maildir-fcc.el
Use `without-restriction` in `with-temporary-notmuch-message-buffer`
[notmuch] / emacs / notmuch-maildir-fcc.el
index 7e177bf7fb4c25bd7d7b4ecb6bfe916292433bdc..cf50e8553c9ffc3b7e12ce144f0a1300cd242e62 100644 (file)
@@ -145,20 +145,25 @@ Otherwise set it according to `notmuch-fcc-dirs'."
 
 (defmacro with-temporary-notmuch-message-buffer (&rest body)
   "Set-up a temporary copy of the current message-mode buffer."
-  `(let ((case-fold-search t)
-        (buf (current-buffer))
-        (mml-externalize-attachments message-fcc-externalize-attachments))
-     (with-current-buffer (get-buffer-create " *message temp*")
-       (erase-buffer)
-       (insert-buffer-substring buf)
-       ,@body)))
+  `(without-restriction
+     (let ((case-fold-search t)
+          (buf (current-buffer))
+          (mml-externalize-attachments message-fcc-externalize-attachments))
+       (with-current-buffer (get-buffer-create " *message temp*")
+        (message-clone-locals buf) ;; for message-encoded-mail-cache
+        (erase-buffer)
+        (insert-buffer-substring buf)
+        ,@body))))
 
 (defun notmuch-maildir-setup-message-for-saving ()
   "Setup message for saving.
 
 This should be called on a temporary copy.
 This is taken from the function message-do-fcc."
-  (message-encode-message-body)
+  (if (not message-encoded-mail-cache)
+      (message-encode-message-body)
+    (erase-buffer)
+    (insert message-encoded-mail-cache))
   (save-restriction
     (message-narrow-to-headers)
     (mail-encode-encoded-word-buffer))
@@ -179,12 +184,12 @@ This is a rearranged version of message mode's message-do-fcc."
        (setq file (message-fetch-field "fcc" t)))
       (when file
        (with-temporary-notmuch-message-buffer
+        (notmuch-maildir-setup-message-for-saving)
         (save-restriction
           (message-narrow-to-headers)
           (while (setq file (message-fetch-field "fcc" t))
             (push file files)
             (message-remove-header "fcc" nil t)))
-        (notmuch-maildir-setup-message-for-saving)
         ;; Process FCC operations.
         (mapc #'notmuch-fcc-handler files)
         (kill-buffer (current-buffer)))))))