(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))
(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)))))))