mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
emacs: Add `notmuch-show-forward-open-messages'.
Add a function to forward all open messages in the current view of a thread. Bind this to "F".
This commit is contained in:
parent
3b63856568
commit
a982773dfb
2 changed files with 59 additions and 0 deletions
|
@ -427,6 +427,54 @@ the From: address first."
|
|||
(message-hide-headers)
|
||||
(set-buffer-modified-p nil)))
|
||||
|
||||
(defun notmuch-mua-new-forward-messages (messages &optional prompt-for-sender)
|
||||
"Compose a new message forwarding MESSAGES.
|
||||
|
||||
If PROMPT-FOR-SENDER is non-nil, the user will be prompteed for
|
||||
the From: address."
|
||||
(let* ((other-headers
|
||||
(when (or prompt-for-sender notmuch-always-prompt-for-sender)
|
||||
(list (cons 'From (notmuch-mua-prompt-for-sender)))))
|
||||
forward-subject) ;; Comes from the first message and is
|
||||
;; applied later.
|
||||
|
||||
;; Generate the template for the outgoing message.
|
||||
(notmuch-mua-mail nil "" other-headers nil (notmuch-mua-get-switch-function))
|
||||
|
||||
(save-excursion
|
||||
;; Insert all of the forwarded messages.
|
||||
(mapc (lambda (id)
|
||||
(let ((temp-buffer (get-buffer-create
|
||||
(concat "*notmuch-fwd-raw-" id "*"))))
|
||||
;; Get the raw version of this message in the buffer.
|
||||
(with-current-buffer temp-buffer
|
||||
(erase-buffer)
|
||||
(let ((coding-system-for-read 'no-conversion))
|
||||
(call-process notmuch-command nil t nil "show" "--format=raw" id))
|
||||
;; Because we process the messages in reverse order,
|
||||
;; always generate a forwarded subject, then use the
|
||||
;; last (i.e. first) one.
|
||||
(setq forward-subject (message-make-forward-subject)))
|
||||
;; Make a copy ready to be forwarded in the
|
||||
;; composition buffer.
|
||||
(message-forward-make-body temp-buffer)
|
||||
;; Kill the temporary buffer.
|
||||
(kill-buffer temp-buffer)))
|
||||
;; `message-forward-make-body' always puts the message at
|
||||
;; the top, so do them in reverse order.
|
||||
(reverse messages))
|
||||
|
||||
;; Add in the appropriate subject.
|
||||
(save-restriction
|
||||
(message-narrow-to-headers)
|
||||
(message-remove-header "Subject")
|
||||
(message-add-header (concat "Subject: " forward-subject)))
|
||||
|
||||
;; `message-forward-make-body' shows the User-agent header. Hide
|
||||
;; it again.
|
||||
(message-hide-headers)
|
||||
(set-buffer-modified-p nil))))
|
||||
|
||||
(defun notmuch-mua-new-reply (query-string &optional prompt-for-sender reply-all)
|
||||
"Compose a reply to the message identified by QUERY-STRING.
|
||||
|
||||
|
|
|
@ -1431,6 +1431,7 @@ reset based on the original query."
|
|||
(define-key map (kbd "<backtab>") 'notmuch-show-previous-button)
|
||||
(define-key map (kbd "TAB") 'notmuch-show-next-button)
|
||||
(define-key map "f" 'notmuch-show-forward-message)
|
||||
(define-key map "F" 'notmuch-show-forward-open-messages)
|
||||
(define-key map "l" 'notmuch-show-filter-thread)
|
||||
(define-key map "r" 'notmuch-show-reply-sender)
|
||||
(define-key map "R" 'notmuch-show-reply)
|
||||
|
@ -1858,6 +1859,16 @@ any effects from previous calls to
|
|||
(with-current-notmuch-show-message
|
||||
(notmuch-mua-new-forward-message prompt-for-sender)))
|
||||
|
||||
(put 'notmuch-show-forward-open-messages 'notmuch-prefix-doc
|
||||
"... and prompt for sender")
|
||||
(defun notmuch-show-forward-open-messages (&optional prompt-for-sender)
|
||||
"Forward the currently open messages."
|
||||
(interactive "P")
|
||||
(let ((open-messages (notmuch-show-get-message-ids-for-open-messages)))
|
||||
(unless open-messages
|
||||
(error "No open messages to forward."))
|
||||
(notmuch-mua-new-forward-messages open-messages prompt-for-sender)))
|
||||
|
||||
(defun notmuch-show-next-message (&optional pop-at-end)
|
||||
"Show the next message.
|
||||
|
||||
|
|
Loading…
Reference in a new issue