emacs: Tag forwarded messages with +forwarded (customizable)
authorÖrjan Ekeberg <ekeberg@kth.se>
Fri, 12 Apr 2019 12:01:12 +0000 (14:01 +0200)
committerDavid Bremner <david@tethera.net>
Sun, 14 Apr 2019 11:00:44 +0000 (08:00 -0300)
Use the buffer-local variable notmuch-message-queued-tag-changes
to change tags when the forwarding message is sent.

emacs/notmuch-message.el
emacs/notmuch-mua.el

index 0d4a8eeef72f429550dc20e73cdfffc6fe1150de..0164472f7b48e90d7a4ad74c27c390bccb270dc4 100644 (file)
@@ -37,6 +37,19 @@ the \"inbox\" and \"todo\" tags, you would set:
   :type '(repeat string)
   :group 'notmuch-send)
 
+(defcustom notmuch-message-forwarded-tags '("+forwarded")
+  "List of tag changes to apply to a message when it has been forwarded.
+
+Tags starting with \"+\" (or not starting with either \"+\" or
+\"-\") in the list will be added, and tags starting with \"-\"
+will be removed from the message being forwarded.
+
+For example, if you wanted to add a \"forwarded\" tag and remove
+the \"inbox\" tag, you would set:
+    (\"+forwarded\" \"-inbox\")"
+  :type '(repeat string)
+  :group 'notmuch-send)
+
 (defconst notmuch-message-queued-tag-changes nil
   "List of messages and corresponding tag-changes to be applied when sending a message.
 
index 2f0de92c6ec28f7fb511a1938698685fc41c17c8..94fa19d778e7f7f9c85436ae62cc00c4c1182535 100644 (file)
@@ -478,7 +478,8 @@ the From: address."
            (list (cons 'From (notmuch-mua-prompt-for-sender)))))
         forward-subject  ;; Comes from the first message and is
                          ;; applied later.
-        forward-references) ;; List of accumulated message-references of forwarded messages
+        forward-references ;; List of accumulated message-references of forwarded messages
+        forward-queries) ;; List of corresponding message-query
 
     ;; Generate the template for the outgoing message.
     (notmuch-mua-mail nil "" other-headers nil (notmuch-mua-get-switch-function))
@@ -497,7 +498,8 @@ the From: address."
                  ;; always generate a forwarded subject, then use the
                  ;; last (i.e. first) one.
                  (setq forward-subject (message-make-forward-subject))
-                 (push (message-fetch-field "Message-ID") forward-references))
+                 (push (message-fetch-field "Message-ID") forward-references)
+                 (push id forward-queries))
                ;; Make a copy ready to be forwarded in the
                ;; composition buffer.
                (message-forward-make-body temp-buffer)
@@ -516,6 +518,14 @@ the From: address."
        (message-add-header (concat "References: "
                                    (mapconcat 'identity forward-references " "))))
 
+      ;; Create a buffer-local queue for tag changes triggered when sending the message
+      (when notmuch-message-forwarded-tags
+       (setq-local notmuch-message-queued-tag-changes
+                   (loop for id in forward-queries
+                         collect
+                         (cons id
+                               notmuch-message-forwarded-tags))))
+
       ;; `message-forward-make-body' shows the User-agent header.  Hide
       ;; it again.
       (message-hide-headers)