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)
|
(message-hide-headers)
|
||||||
(set-buffer-modified-p nil)))
|
(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)
|
(defun notmuch-mua-new-reply (query-string &optional prompt-for-sender reply-all)
|
||||||
"Compose a reply to the message identified by QUERY-STRING.
|
"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 "<backtab>") 'notmuch-show-previous-button)
|
||||||
(define-key map (kbd "TAB") 'notmuch-show-next-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-message)
|
||||||
|
(define-key map "F" 'notmuch-show-forward-open-messages)
|
||||||
(define-key map "l" 'notmuch-show-filter-thread)
|
(define-key map "l" 'notmuch-show-filter-thread)
|
||||||
(define-key map "r" 'notmuch-show-reply-sender)
|
(define-key map "r" 'notmuch-show-reply-sender)
|
||||||
(define-key map "R" 'notmuch-show-reply)
|
(define-key map "R" 'notmuch-show-reply)
|
||||||
|
@ -1858,6 +1859,16 @@ any effects from previous calls to
|
||||||
(with-current-notmuch-show-message
|
(with-current-notmuch-show-message
|
||||||
(notmuch-mua-new-forward-message prompt-for-sender)))
|
(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)
|
(defun notmuch-show-next-message (&optional pop-at-end)
|
||||||
"Show the next message.
|
"Show the next message.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue