X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-message.el;h=0d4a8eeef72f429550dc20e73cdfffc6fe1150de;hp=4dc48832f1412ec4a1dfd41fcee64b7f70a06549;hb=d9800c893289b56dcc966241528643ae83f2ff9a;hpb=2590d94bf0a1fc359b3b5463d4054d350324c891 diff --git a/emacs/notmuch-message.el b/emacs/notmuch-message.el index 4dc48832..0d4a8eee 100644 --- a/emacs/notmuch-message.el +++ b/emacs/notmuch-message.el @@ -1,4 +1,4 @@ -;; notmuch-message.el --- message-mode functions specific to notmuch +;;; notmuch-message.el --- message-mode functions specific to notmuch ;; ;; Copyright © Jesse Rosenthal ;; @@ -15,13 +15,14 @@ ;; General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License -;; along with Notmuch. If not, see . +;; along with Notmuch. If not, see . ;; ;; Authors: Jesse Rosenthal +;;; Code: + (require 'message) (require 'notmuch-tag) -(require 'notmuch-mua) (defcustom notmuch-message-replied-tags '("+replied") "List of tag changes to apply to a message when it has been replied to. @@ -32,17 +33,27 @@ will be removed from the message being replied to. For example, if you wanted to add a \"replied\" tag and remove the \"inbox\" and \"todo\" tags, you would set: - (\"+replied\" \"-inbox\" \"-todo\"\)" + (\"+replied\" \"-inbox\" \"-todo\")" :type '(repeat string) :group 'notmuch-send) -(defun notmuch-message-mark-replied () - ;; get the in-reply-to header and parse it for the message id. - (let ((rep (mail-header-parse-addresses (message-field-value "In-Reply-To")))) - (when (and notmuch-message-replied-tags rep) - (funcall 'notmuch-tag (notmuch-id-to-query (car (car rep))) - (notmuch-tag-change-list notmuch-message-replied-tags))))) +(defconst notmuch-message-queued-tag-changes nil + "List of messages and corresponding tag-changes to be applied when sending a message. + +This variable is overridden by buffer-local versions in message +buffers where tag changes should be triggered when sending off +the message. Each item in this list is a list of strings, where +the first is a notmuch query and the rest are the tag changes to +be applied to the matching messages.") -(add-hook 'message-send-hook 'notmuch-message-mark-replied) +(defun notmuch-message-apply-queued-tag-changes () + ;; Apply the tag changes queued in the buffer-local variable notmuch-message-queued-tag-changes. + (dolist (query-and-tags notmuch-message-queued-tag-changes) + (notmuch-tag (car query-and-tags) + (cdr query-and-tags)))) + +(add-hook 'message-send-hook 'notmuch-message-apply-queued-tag-changes) (provide 'notmuch-message) + +;;; notmuch-message.el ends here