Add "mark as read" versions of the archive thread functions to archive and and mark each message in thread as read by removing the "inbox" and "unread" tags from the messages. Also add default keybindings A and X for them: shifted a and x also mark as read. --- emacs/notmuch-show.el | 25 ++++++++++++++++++++++--- 1 files changed, 22 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 6685717..dbed0a4 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -886,7 +886,9 @@ function is used. " (define-key map "-" 'notmuch-show-remove-tag) (define-key map "+" 'notmuch-show-add-tag) (define-key map "x" 'notmuch-show-archive-thread-then-exit) + (define-key map "X" 'notmuch-show-archive-and-read-thread-then-exit) (define-key map "a" 'notmuch-show-archive-thread) + (define-key map "A" 'notmuch-show-archive-and-read-thread) (define-key map "N" 'notmuch-show-next-message) (define-key map "P" 'notmuch-show-previous-message) (define-key map "n" 'notmuch-show-next-open-message) @@ -1349,10 +1351,12 @@ argument, hide all of the messages." (interactive) (backward-button 1)) -(defun notmuch-show-archive-thread-internal (show-next) +(defun notmuch-show-archive-thread-internal (show-next mark-read) ;; Remove the tag from the current set of messages. (goto-char (point-min)) (loop do (notmuch-show-remove-tag "inbox") + (if mark-read + (notmuch-show-remove-tag "unread")) until (not (notmuch-show-goto-message-next))) ;; Move to the next item in the search results, if any. (let ((parent-buffer notmuch-show-parent-buffer)) @@ -1376,12 +1380,27 @@ being delivered to the same thread. It does not archive the entire thread, but only the messages shown in the current buffer." (interactive) - (notmuch-show-archive-thread-internal t)) + (notmuch-show-archive-thread-internal t nil)) + +(defun notmuch-show-archive-and-read-thread () + "Archive and read each message in thread, then show next thread from search. + +Archive and mark as read each message currently shown by removing +the \"inbox\" and \"unread\" tags from each. Then kill this +buffer and show the next thread from the search from which this +thread was originally shown." + (interactive) + (notmuch-show-archive-thread-internal t t)) (defun notmuch-show-archive-thread-then-exit () "Archive each message in thread, then exit back to search results." (interactive) - (notmuch-show-archive-thread-internal nil)) + (notmuch-show-archive-thread-internal nil nil)) + +(defun notmuch-show-archive-and-read-thread-then-exit () + "Archive and read each message in thread, then exit back to search results." + (interactive) + (notmuch-show-archive-thread-internal nil t)) (defun notmuch-show-stash-cc () "Copy CC field of current message to kill-ring." -- 1.7.1