unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / Atom feed
* [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	[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	[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	[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 2/3] emacs/tree: enable moving to next thread in search results
  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
  0 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2020-08-15 12:54 UTC (permalink / raw)
  To: William Casarin, notmuch; +Cc: Teemu Likonen, William Casarin

William Casarin <jb55@jb55.com> writes:

> 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.
>

This seems to work, and is pretty slick. If there are no objections
today, I'll apply to master,

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

unofficial mirror of notmuch@notmuchmail.org

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/notmuch/0 notmuch/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 notmuch notmuch/ https://yhetil.org/notmuch \
		notmuch@notmuchmail.org
	public-inbox-index notmuch

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.mail.notmuch.general
	nntp://news.gmane.io/gmane.mail.notmuch.general


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git