* [PATCH v3 0/2] Allow forwarding of all open messages in the current view.
@ 2016-02-08 11:34 David Edmondson
2016-02-08 11:34 ` [PATCH v3 1/2] emacs: Add `notmuch-show-forward-open-messages' David Edmondson
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: David Edmondson @ 2016-02-08 11:34 UTC (permalink / raw)
To: notmuch
Allow forwarding of all open messages in the current view.
In response to id:"87fvyhb40x.fsf@alice.fifthhorseman.net".
v2:
- Use multiple message forwarding to implement single message
forwarding.
v3:
- Fix silly error.
David Edmondson (2):
emacs: Add `notmuch-show-forward-open-messages'.
emacs: `notmuch-show-forward-message' can use
`notmuch-mua-new-forward-messages'
emacs/notmuch-mua.el | 62 +++++++++++++++++++++++++++++++++++++--------------
emacs/notmuch-show.el | 15 +++++++++++--
2 files changed, 58 insertions(+), 19 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/2] emacs: Add `notmuch-show-forward-open-messages'.
2016-02-08 11:34 [PATCH v3 0/2] Allow forwarding of all open messages in the current view David Edmondson
@ 2016-02-08 11:34 ` David Edmondson
2016-02-08 11:34 ` [PATCH v3 2/2] emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages' David Edmondson
2016-02-08 23:05 ` [PATCH v3 0/2] Allow forwarding of all open messages in the current view Mark Walters
2 siblings, 0 replies; 5+ messages in thread
From: David Edmondson @ 2016-02-08 11:34 UTC (permalink / raw)
To: notmuch
Add a function to forward all open messages in the current view of a
thread. Bind this to "F".
---
emacs/notmuch-mua.el | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
emacs/notmuch-show.el | 11 +++++++++++
2 files changed, 59 insertions(+)
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 5462f54..4d50d25 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -425,6 +425,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.
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 3345878..a8c6f1e 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1371,6 +1371,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)
@@ -1798,6 +1799,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.
--
2.1.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages'
2016-02-08 11:34 [PATCH v3 0/2] Allow forwarding of all open messages in the current view David Edmondson
2016-02-08 11:34 ` [PATCH v3 1/2] emacs: Add `notmuch-show-forward-open-messages' David Edmondson
@ 2016-02-08 11:34 ` David Edmondson
2016-03-24 11:06 ` David Bremner
2016-02-08 23:05 ` [PATCH v3 0/2] Allow forwarding of all open messages in the current view Mark Walters
2 siblings, 1 reply; 5+ messages in thread
From: David Edmondson @ 2016-02-08 11:34 UTC (permalink / raw)
To: notmuch
Which allows `notmuch-mua-new-forward-message' to be removed.
---
emacs/notmuch-mua.el | 20 --------------------
emacs/notmuch-show.el | 4 ++--
2 files changed, 2 insertions(+), 22 deletions(-)
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 4d50d25..99e23d8 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -405,26 +405,6 @@ the From: address first."
(list (cons 'From (notmuch-mua-prompt-for-sender))))))
(notmuch-mua-mail nil nil other-headers nil (notmuch-mua-get-switch-function))))
-(defun notmuch-mua-new-forward-message (&optional prompt-for-sender)
- "Invoke the notmuch message forwarding window.
-
-The current buffer must contain an RFC2822 message to forward.
-
-If PROMPT-FOR-SENDER is non-nil, the user will be prompted for
-the From: address first."
- (let* ((cur (current-buffer))
- (message-forward-decoded-p nil)
- (subject (message-make-forward-subject))
- (other-headers
- (when (or prompt-for-sender notmuch-always-prompt-for-sender)
- (list (cons 'From (notmuch-mua-prompt-for-sender))))))
- (notmuch-mua-mail nil subject other-headers nil (notmuch-mua-get-switch-function))
- (message-forward-make-body cur)
- ;; `message-forward-make-body' shows the User-agent header. Hide
- ;; it again.
- (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.
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index a8c6f1e..d40cb09 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1796,8 +1796,8 @@ any effects from previous calls to
(defun notmuch-show-forward-message (&optional prompt-for-sender)
"Forward the current message."
(interactive "P")
- (with-current-notmuch-show-message
- (notmuch-mua-new-forward-message prompt-for-sender)))
+ (notmuch-mua-new-forward-messages (list (notmuch-show-get-message-id))
+ prompt-for-sender))
(put 'notmuch-show-forward-open-messages 'notmuch-prefix-doc
"... and prompt for sender")
--
2.1.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 0/2] Allow forwarding of all open messages in the current view.
2016-02-08 11:34 [PATCH v3 0/2] Allow forwarding of all open messages in the current view David Edmondson
2016-02-08 11:34 ` [PATCH v3 1/2] emacs: Add `notmuch-show-forward-open-messages' David Edmondson
2016-02-08 11:34 ` [PATCH v3 2/2] emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages' David Edmondson
@ 2016-02-08 23:05 ` Mark Walters
2 siblings, 0 replies; 5+ messages in thread
From: Mark Walters @ 2016-02-08 23:05 UTC (permalink / raw)
To: David Edmondson, notmuch
Hi
Just confirming that this LGTM +1
Best wishes
Mark
On Mon, 08 Feb 2016, David Edmondson <dme@dme.org> wrote:
> Allow forwarding of all open messages in the current view.
>
> In response to id:"87fvyhb40x.fsf@alice.fifthhorseman.net".
>
> v2:
> - Use multiple message forwarding to implement single message
> forwarding.
>
> v3:
> - Fix silly error.
>
>
> David Edmondson (2):
> emacs: Add `notmuch-show-forward-open-messages'.
> emacs: `notmuch-show-forward-message' can use
> `notmuch-mua-new-forward-messages'
>
> emacs/notmuch-mua.el | 62 +++++++++++++++++++++++++++++++++++++--------------
> emacs/notmuch-show.el | 15 +++++++++++--
> 2 files changed, 58 insertions(+), 19 deletions(-)
>
> --
> 2.1.4
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-03-24 11:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-08 11:34 [PATCH v3 0/2] Allow forwarding of all open messages in the current view David Edmondson
2016-02-08 11:34 ` [PATCH v3 1/2] emacs: Add `notmuch-show-forward-open-messages' David Edmondson
2016-02-08 11:34 ` [PATCH v3 2/2] emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages' David Edmondson
2016-03-24 11:06 ` David Bremner
2016-02-08 23:05 ` [PATCH v3 0/2] Allow forwarding of all open messages in the current view Mark Walters
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).