unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [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

* Re: [PATCH v3 2/2] emacs: `notmuch-show-forward-message' can use `notmuch-mua-new-forward-messages'
  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
  0 siblings, 0 replies; 5+ messages in thread
From: David Bremner @ 2016-03-24 11:06 UTC (permalink / raw)
  To: David Edmondson, notmuch

David Edmondson <dme@dme.org> writes:

> Which allows `notmuch-mua-new-forward-message' to be removed.

Pushed this series

d

^ 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).