X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch.el;h=64caa3eaf2e5a9b73c79b38634ba9f398d9ff083;hp=d2d82a97601756338617d738c91b5ed75c9d75a0;hb=d5dcfc714e13256cb2084b30d3506a4abc990a51;hpb=3fa00020eaac7dfb403cac239a5e59fb2b5d3e2c;ds=sidebyside diff --git a/emacs/notmuch.el b/emacs/notmuch.el index d2d82a97..64caa3ea 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -388,8 +388,9 @@ any tags). Pressing \\[notmuch-search-show-thread] on any line displays that thread. The '\\[notmuch-search-add-tag]' and '\\[notmuch-search-remove-tag]' keys can be used to add or remove tags from a thread. The '\\[notmuch-search-archive-thread]' key is a convenience for archiving a thread (removing the \"inbox\" -tag). The '\\[notmuch-search-tag-all]' key can be used to add or remove a tag from all -threads in the current buffer. +tag). The '\\[notmuch-search-tag-all]' key can be used to add and/or remove tags from all +messages (as opposed to threads) that match the current query. Use with caution, as this +will also tag matching messages that arrived *after* constructing the buffer. Other useful commands are '\\[notmuch-search-filter]' for filtering the current search based on an additional query string, '\\[notmuch-search-filter-by-tag]' for filtering to include @@ -475,10 +476,12 @@ BEG." (push (plist-get (notmuch-search-get-result pos) property) output))) output)) -(defun notmuch-search-find-thread-id () - "Return the thread for the current thread" +(defun notmuch-search-find-thread-id (&optional bare) + "Return the thread for the current thread + +If BARE is set then do not prefix with \"thread:\"" (let ((thread (plist-get (notmuch-search-get-result) :thread))) - (when thread (concat "thread:" thread)))) + (when thread (concat (unless bare "thread:") thread)))) (defun notmuch-search-find-thread-id-region (beg end) "Return a list of threads for the current region" @@ -591,11 +594,19 @@ See `notmuch-tag' for information on the format of TAG-CHANGES." (notmuch-search-tag "-")) (defun notmuch-search-archive-thread () - "Archive the currently selected thread (remove its \"inbox\" tag). + "Archive the currently selected thread. + +Archive each message in the currently selected thread by applying +the tag changes in `notmuch-archive-tags' to each (remove the +\"inbox\" tag by default). If a prefix argument is given, the +messages will be \"unarchived\" (i.e. the tag changes in +`notmuch-archive-tags' will be reversed). This function advances the next thread when finished." (interactive) - (notmuch-search-tag '("-inbox")) + (when notmuch-archive-tags + (notmuch-search-tag + (notmuch-tag-change-list notmuch-archive-tags))) (notmuch-search-next-thread)) (defun notmuch-search-update-result (result &optional pos) @@ -936,7 +947,7 @@ If `query' is nil, it is read interactively from the minibuffer. Other optional parameters are used as follows: oldest-first: A Boolean controlling the sort order of returned threads - target-thread: A thread ID (with the thread: prefix) that will be made + target-thread: A thread ID (without the thread: prefix) that will be made current if it appears in the search results. target-line: The line number to move to if the target thread does not appear in the search results." @@ -993,7 +1004,7 @@ same relative position within the new buffer." (interactive) (let ((target-line (line-number-at-pos)) (oldest-first notmuch-search-oldest-first) - (target-thread (notmuch-search-find-thread-id)) + (target-thread (notmuch-search-find-thread-id 'bare)) (query notmuch-search-query-string) (continuation notmuch-search-continuation)) (notmuch-kill-this-buffer)