[PATCH 2/2] Add notmuch-search-show-or-unthread

Subject: [PATCH 2/2] Add notmuch-search-show-or-unthread

Date: Thu, 7 Dec 2023 18:02:47 +0100

To: notmuch@notmuchmail.org

Cc: Sandra Snan

From: Sandra Snan

This is a dispatch function from the search view that if a thread is
small, it shows it with `notmuch-search-show-thread`, and if it's big,
it shows it with `notmuch-search-show-or-unthread`.

On my own machine I've bound it to `RET` and to `<mouse-1>` in the
notmuch-search-mode-map, but that binding isn't part of this patch.

It shells out to notmuch count to see if the thread is big or small.
"Big" is hardcoded to ten messages or lower, if we want to introduce a
variable for that instead, that might be great.

It's a deliberate choice to count all the messages in the thread, not
just ones that are part of the search (a.k.a. the ones that will show
up in the unthreaded view if the thread is big). The reason for that
is that that's the number that matters when it comes to how well
`notmuch-search-show-thread` can handle it. That's by design. So if
there's a thread with 100000 messages and four of them show up in the
search (maybe because they have a particular tag or date), it'll see
that the thread is big and "explode" it and then show those four new
messages in a flat view.
 emacs/notmuch.el | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index c8f53625..e348f660 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -564,6 +564,19 @@ Return non-nil on success."
       (message "No such thread with that id found!")
+(defun notmuch-search-show-or-unthread ()
+  "If the thread is small, show it the normal notmuch way, and if
+it's big, show the messages separatley in a buffer so you can
+visit them individually."
+  (interactive)
+  (let ((thread-id (notmuch-search-find-thread-id)))
+    (if thread-id
+	(if (< 11 (notmuch-call-notmuch-sexp "count" thread-id))
+	    (notmuch-search-unthread-thread)
+	    (notmuch-search-show-thread))
+      (message "No such thread with that id found!")
+      nil)))
 (defun notmuch-tree-from-search-current-query ()
   "Tree view of current query."

notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org