* [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable
@ 2020-08-11 17:36 William Casarin
2020-08-11 17:36 ` [PATCH v2 2/3] emacs/tree: enable moving to next thread in search results William Casarin
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: William Casarin @ 2020-08-11 17:36 UTC (permalink / raw)
To: notmuch; +Cc: Teemu Likonen, William Casarin
This variable will be used in a similar fashion to
notmuch-show-parent-buffer. It will be used to navigate between
threads from the parent search buffer.
Signed-off-by: William Casarin <jb55@jb55.com>
---
This is a rebased version of id:20200423234715.6633-1-jb55@jb55.com on
top of Jonas' emacs cleanups.
This patch series makes it easier to navigate threads in tree mode.
Basic usage: a thread is entered via M-RET. Then you can use A to
archive and jump to the next thread.
emacs/notmuch-tree.el | 6 +++++-
emacs/notmuch.el | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el
index fbba4bb3..29f64851 100644
--- a/emacs/notmuch-tree.el
+++ b/emacs/notmuch-tree.el
@@ -222,6 +222,9 @@ For example:
"A buffer local copy of argument open-target to the function notmuch-tree.")
(make-variable-buffer-local 'notmuch-tree-open-target)
+(defvar notmuch-tree-parent-buffer nil)
+(make-variable-buffer-local 'notmuch-tree-parent-buffer)
+
(defvar notmuch-tree-message-window nil
"The window of the message pane.
@@ -1050,7 +1053,7 @@ the same as for the function notmuch-tree."
")")
notmuch-tree-basic-query))
-(defun notmuch-tree (&optional query query-context target buffer-name open-target unthreaded)
+(defun notmuch-tree (&optional query query-context target buffer-name open-target unthreaded parent-buffer)
"Display threads matching QUERY in tree view.
The arguments are:
@@ -1080,6 +1083,7 @@ The arguments are:
;; Don't track undo information for this buffer
(set 'buffer-undo-list t)
(notmuch-tree-worker query query-context target open-target unthreaded)
+ (setq notmuch-tree-parent-buffer parent-buffer)
(setq truncate-lines t))
(defun notmuch-unthreaded (&optional query query-context target buffer-name open-target)
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index babddbb6..8132cea6 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -545,7 +545,7 @@ thread."
notmuch-search-query-string
nil
(notmuch-prettify-subject (notmuch-search-find-subject))
- t))
+ t nil (current-buffer)))
(defun notmuch-search-reply-to-thread (&optional prompt-for-sender)
"Begin composing a reply-all to the entire current thread in a new buffer."
base-commit: 1c80020e701c7323de137c0616fc8864443d7bd3
--
2.28.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] emacs/tree: enable moving to next thread in search results
2020-08-11 17:36 [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable William Casarin
@ 2020-08-11 17:36 ` William Casarin
2020-08-15 12:54 ` David Bremner
2020-08-11 17:36 ` [PATCH v2 3/3] emacs/tree: add notmuch-tree-archive-thread-then-next William Casarin
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: William Casarin @ 2020-08-11 17:36 UTC (permalink / raw)
To: notmuch; +Cc: Teemu Likonen, William Casarin
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>
---
emacs/notmuch-tree.el | 40 +++++++++++++++++++++++++++++++++++++---
1 file changed, 37 insertions(+), 3 deletions(-)
diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el
index 29f64851..bf500b60 100644
--- a/emacs/notmuch-tree.el
+++ b/emacs/notmuch-tree.el
@@ -725,12 +725,14 @@ nil otherwise."
(while (not (or (notmuch-tree-get-prop :first) (eobp)))
(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)
(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
found or nil if not."
(interactive)
@@ -739,6 +741,38 @@ found or nil if not."
(forward-line 1))
(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)
"Iterate through all messages in the current thread
and call FUNCTION for side effects."
--
2.28.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] emacs/tree: add notmuch-tree-archive-thread-then-next
2020-08-11 17:36 [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable William Casarin
2020-08-11 17:36 ` [PATCH v2 2/3] emacs/tree: enable moving to next thread in search results William Casarin
@ 2020-08-11 17:36 ` William Casarin
2020-08-15 12:32 ` [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable David Bremner
2020-08-16 13:59 ` David Bremner
3 siblings, 0 replies; 7+ messages in thread
From: William Casarin @ 2020-08-11 17:36 UTC (permalink / raw)
To: notmuch; +Cc: Teemu Likonen, William Casarin
Now that notmuch-tree-next-thread acts more like its notmuch-show
counterpart, let's update the binding to move to the next thread after
archiving.
Signed-off-by: William Casarin <jb55@jb55.com>
---
emacs/notmuch-tree.el | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el
index bf500b60..2bb7c80f 100644
--- a/emacs/notmuch-tree.el
+++ b/emacs/notmuch-tree.el
@@ -338,7 +338,7 @@ FUNC."
(define-key map [mouse-1] 'notmuch-tree-show-message)
(define-key map "x" 'notmuch-tree-archive-message-then-next-or-exit)
(define-key map "X" 'notmuch-tree-archive-thread-then-exit)
- (define-key map "A" 'notmuch-tree-archive-thread)
+ (define-key map "A" 'notmuch-tree-archive-thread-then-next)
(define-key map "a" 'notmuch-tree-archive-message-then-next)
(define-key map "z" 'notmuch-tree-to-tree)
(define-key map "n" 'notmuch-tree-next-matching-message)
@@ -497,6 +497,12 @@ NOT change the database."
(notmuch-tree-close-message-window)
(notmuch-tree query)))
+(defun notmuch-tree-archive-thread-then-next ()
+ "Archive all messages in the current buffer, then show next thread from search."
+ (interactive)
+ (notmuch-tree-archive-thread)
+ (notmuch-tree-next-thread))
+
(defun notmuch-unthreaded-from-tree-current-query ()
"Switch from tree view to unthreaded view."
(interactive)
--
2.28.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable
2020-08-11 17:36 [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable William Casarin
2020-08-11 17:36 ` [PATCH v2 2/3] emacs/tree: enable moving to next thread in search results William Casarin
2020-08-11 17:36 ` [PATCH v2 3/3] emacs/tree: add notmuch-tree-archive-thread-then-next William Casarin
@ 2020-08-15 12:32 ` David Bremner
2020-08-15 12:41 ` David Bremner
2020-08-16 13:59 ` David Bremner
3 siblings, 1 reply; 7+ messages in thread
From: David Bremner @ 2020-08-15 12:32 UTC (permalink / raw)
To: William Casarin, notmuch; +Cc: Teemu Likonen
William Casarin <jb55@jb55.com> writes:
> This variable will be used in a similar fashion to
> notmuch-show-parent-buffer. It will be used to navigate between
> threads from the parent search buffer.
>
> Signed-off-by: William Casarin <jb55@jb55.com>
Can someone explain the difference in behaviour before and after this
patch?
d
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable
2020-08-15 12:32 ` [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable David Bremner
@ 2020-08-15 12:41 ` David Bremner
0 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2020-08-15 12:41 UTC (permalink / raw)
To: William Casarin, notmuch; +Cc: Teemu Likonen
David Bremner <david@tethera.net> writes:
> William Casarin <jb55@jb55.com> writes:
>
>> This variable will be used in a similar fashion to
>> notmuch-show-parent-buffer. It will be used to navigate between
>> threads from the parent search buffer.
>>
>> Signed-off-by: William Casarin <jb55@jb55.com>
>
> Can someone explain the difference in behaviour before and after this
> patch?
Ah, reading ahead I see the main point is to use it in the next
patch. That's fine. I guess in general a hint in the commit message is
nice, but not worth respinning the series just for that.
d
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable
2020-08-11 17:36 [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable William Casarin
` (2 preceding siblings ...)
2020-08-15 12:32 ` [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable David Bremner
@ 2020-08-16 13:59 ` David Bremner
3 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2020-08-16 13:59 UTC (permalink / raw)
To: William Casarin, notmuch; +Cc: Teemu Likonen, William Casarin
William Casarin <jb55@jb55.com> writes:
> This variable will be used in a similar fashion to
> notmuch-show-parent-buffer. It will be used to navigate between
> threads from the parent search buffer.
>
> Signed-off-by: William Casarin <jb55@jb55.com>
v2 applied to master
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-08-16 13:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-11 17:36 [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable William Casarin
2020-08-11 17:36 ` [PATCH v2 2/3] emacs/tree: enable moving to next thread in search results William Casarin
2020-08-15 12:54 ` David Bremner
2020-08-11 17:36 ` [PATCH v2 3/3] emacs/tree: add notmuch-tree-archive-thread-then-next William Casarin
2020-08-15 12:32 ` [PATCH v2 1/3] emacs/tree: introduce notmuch-tree-parent-buffer variable David Bremner
2020-08-15 12:41 ` David Bremner
2020-08-16 13:59 ` David Bremner
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).