mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
emacs/tree: enable moving to next thread in search results
This introduces a new function called notmuch-tree-next-thread-from-search which is analogous to notmuch-show-next-thread. It will switch to the next or previous thread from the parent search results. We rename notmuch-tree-{prev,next}-thread to a more descriptive notmuch-tree-{prev,next}-thread-in-tree to reflect the fact that it only moves to the next thread in the current tree. notmuch-tree-next-thread now switches to the next thread in the current tree first, but if there are none, it looks for the next tree in the search results. This makes notmuch-tree feel more like notmuch-show when using the M-Enter, M-n and M-p bindings. Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
parent
189175ecd6
commit
874f14ec2b
1 changed files with 37 additions and 3 deletions
|
@ -725,12 +725,14 @@ nil otherwise."
|
||||||
(while (not (or (notmuch-tree-get-prop :first) (eobp)))
|
(while (not (or (notmuch-tree-get-prop :first) (eobp)))
|
||||||
(forward-line -1))))
|
(forward-line -1))))
|
||||||
|
|
||||||
(defun notmuch-tree-prev-thread ()
|
(defun notmuch-tree-prev-thread-in-tree ()
|
||||||
|
"Move to the previous thread in the current tree"
|
||||||
(interactive)
|
(interactive)
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(notmuch-tree-thread-top))
|
(notmuch-tree-thread-top)
|
||||||
|
(not (bobp)))
|
||||||
|
|
||||||
(defun notmuch-tree-next-thread ()
|
(defun notmuch-tree-next-thread-in-tree ()
|
||||||
"Get the next thread in the current tree. Returns t if a thread was
|
"Get the next thread in the current tree. Returns t if a thread was
|
||||||
found or nil if not."
|
found or nil if not."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
@ -739,6 +741,38 @@ found or nil if not."
|
||||||
(forward-line 1))
|
(forward-line 1))
|
||||||
(not (eobp)))
|
(not (eobp)))
|
||||||
|
|
||||||
|
(defun notmuch-tree-next-thread-from-search (&optional previous)
|
||||||
|
"Move to the next thread in the parent search results, if any.
|
||||||
|
|
||||||
|
If PREVIOUS is non-nil, move to the previous item in the
|
||||||
|
search results instead."
|
||||||
|
(interactive "P")
|
||||||
|
(let ((parent-buffer notmuch-tree-parent-buffer))
|
||||||
|
(notmuch-tree-quit t)
|
||||||
|
(when (buffer-live-p parent-buffer)
|
||||||
|
(switch-to-buffer parent-buffer)
|
||||||
|
(if previous
|
||||||
|
(notmuch-search-previous-thread)
|
||||||
|
(notmuch-search-next-thread))
|
||||||
|
(notmuch-tree-from-search-thread))))
|
||||||
|
|
||||||
|
(defun notmuch-tree-next-thread (&optional previous)
|
||||||
|
"Move to the next thread in the current tree or parent search
|
||||||
|
results
|
||||||
|
|
||||||
|
If PREVIOUS is non-nil, move to the previous thread in the tree or
|
||||||
|
search results instead."
|
||||||
|
(interactive)
|
||||||
|
(unless (if previous (notmuch-tree-prev-thread-in-tree)
|
||||||
|
(notmuch-tree-next-thread-in-tree))
|
||||||
|
(notmuch-tree-next-thread-from-search previous)))
|
||||||
|
|
||||||
|
(defun notmuch-tree-prev-thread ()
|
||||||
|
"Move to the previous thread in the current tree or parent search
|
||||||
|
results"
|
||||||
|
(interactive)
|
||||||
|
(notmuch-tree-next-thread t))
|
||||||
|
|
||||||
(defun notmuch-tree-thread-mapcar (function)
|
(defun notmuch-tree-thread-mapcar (function)
|
||||||
"Iterate through all messages in the current thread
|
"Iterate through all messages in the current thread
|
||||||
and call FUNCTION for side effects."
|
and call FUNCTION for side effects."
|
||||||
|
|
Loading…
Reference in a new issue