diff options
author | Jameson Graef Rollins <jrollins@finestructure.net> | 2012-01-24 16:06:17 -0800 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2012-01-30 23:19:10 -0400 |
commit | 047792102c133f02e043759e9b8399e98938ba7f (patch) | |
tree | 5ebc7ef3cb722a01be362a4188d68c44dc68dc81 /emacs/notmuch-show.el | |
parent | 9b7e0dcb9a8bd8a5898d9dd68715f3a0d0e5280d (diff) |
emacs: break up notmuch-show-archive-thread-internal into two more generally useful functions
Break up notmuch-show-archive-thread-internal into two new functions:
notmuch-show-tag-thread-internal: applies a tag to all messages in
thread. If option remove flag is t, tags will be removed instead of
added.
notmuch-show-next-thread: moves to the next thread in the search
result. If given a prefix, will show the next result, otherwise will
just move to it in the search view.
Two new interactive functions, notmuch-show-{add,remove}-tag-thread,
are also added. Together, these provide a better suit of thread
tagging and navigation tools.
The higher level thread archiving functions are modified to use these
new function.
Diffstat (limited to 'emacs/notmuch-show.el')
-rw-r--r-- | emacs/notmuch-show.el | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 6b8bd199..33024390 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1557,20 +1557,38 @@ argument, hide all of the messages." (interactive) (backward-button 1)) -(defun notmuch-show-archive-thread-internal (show-next) - ;; Remove the tag from the current set of messages. +(defun notmuch-show-tag-thread-internal (tag &optional remove) + "Add tag to the current set of messages. + +If the remove switch is given, tags will be removed instead of +added." (goto-char (point-min)) - (loop do (notmuch-show-remove-tag "inbox") - until (not (notmuch-show-goto-message-next))) - ;; Move to the next item in the search results, if any. + (let ((tag-function (if remove + 'notmuch-show-remove-tag + 'notmuch-show-add-tag))) + (loop do (funcall tag-function tag) + until (not (notmuch-show-goto-message-next))))) + +(defun notmuch-show-add-tag-thread (tag) + "Add tag to all messages in the current thread." + (interactive) + (notmuch-show-tag-thread-internal tag)) + +(defun notmuch-show-remove-tag-thread (tag) + "Remove tag from all messages in the current thread." + (interactive) + (notmuch-show-tag-thread-internal tag t)) + +(defun notmuch-show-next-thread (&optional show-next) + "Move to the next item in the search results, if any." + (interactive "P") (let ((parent-buffer notmuch-show-parent-buffer)) (notmuch-kill-this-buffer) - (if parent-buffer - (progn - (switch-to-buffer parent-buffer) - (notmuch-search-next-thread) - (if show-next - (notmuch-search-show-thread)))))) + (when parent-buffer + (switch-to-buffer parent-buffer) + (notmuch-search-next-thread) + (if show-next + (notmuch-search-show-thread))))) (defun notmuch-show-archive-thread () "Archive each message in thread, then show next thread from search. @@ -1584,12 +1602,14 @@ 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-remove-tag-thread "inbox") + (notmuch-show-next-thread 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-remove-tag-thread "inbox") + (notmuch-show-next-thread)) (defun notmuch-show-stash-cc () "Copy CC field of current message to kill-ring." |