* notmuch.el question: reading all messages in thread
@ 2022-11-22 17:27 Matt Armstrong
2022-11-22 18:29 ` Kyle Meyer
0 siblings, 1 reply; 2+ messages in thread
From: Matt Armstrong @ 2022-11-22 17:27 UTC (permalink / raw)
To: notmuch
Sometimes a notmuch query matches only a subset of messages in a thread.
When this happens only that subset of messages will be "open". Many
notmuch commands operate on the "open" messages only. For example: SPC,
'n', 'p'.
Often this is what I want. It works well when I'm looking for a
specific piece of information, or when I am interested in reading only
the unread messages in a long thread that I have seen previously.
Often this is not what I want. I'm interested in seeing all messages
when I am looking for entire conversations where a topic is being
discussed. E.g. when I want to re-read a long forgotten thread, or one
that surfaced through specific search terms that appear only in a few of
the messages in the thread.
For example, I subscribe to some lists but don't read all messages in a
timely manner, if I ever read them at all. A search might surface
threads from those lists before I read them with my usual "tag:inbox
tag:somelist" query. I typically find these threads with a query
"tag:inbox some other search term".
In the second case I can achieve what I want with queries like:
thread:"{tag:inbox some other search term}"
But this is a burden to type and I often realize I want this after the
usual query has produced the search results, and then pressed 'Z' to get
a tree view, and realized that most of the messages are "closed."
I looked for a way to easily re-query a tree view buffer such that all
messages in all threads shown are "open" but did not find it. Does this
exist?
I suppose I'm looking for the opposite of `notmuch-tree-filter'. Maybe
`notmuch-tree-widen-to-thread' that produces a new notmuch tree widened
to the entire thread of the current message.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: notmuch.el question: reading all messages in thread
2022-11-22 17:27 notmuch.el question: reading all messages in thread Matt Armstrong
@ 2022-11-22 18:29 ` Kyle Meyer
0 siblings, 0 replies; 2+ messages in thread
From: Kyle Meyer @ 2022-11-22 18:29 UTC (permalink / raw)
To: Matt Armstrong; +Cc: notmuch
Matt Armstrong writes:
[...]
> I looked for a way to easily re-query a tree view buffer such that all
> messages in all threads shown are "open" but did not find it. Does this
> exist?
I've wanted something like this too and will be happy if someone points
out an existing way to do it. I'm not aware of one.
> I suppose I'm looking for the opposite of `notmuch-tree-filter'. Maybe
> `notmuch-tree-widen-to-thread' that produces a new notmuch tree widened
> to the entire thread of the current message.
In show buffers, I remap notmuch-tree-from-show-current-query to a
custom function. Like the original variant, it displays the tree for a
message's thread, but giving a prefix argument says to display all the
messages as "open".
I don't think that's exactly what you're asking for, but it still might
be useful (at least for adapting to something that behaves as you want).
--8<---------------cut here---------------start------------->8---
(defun km/notmuch-thread-id-from-message-id (message-id)
(let ((threads (with-temp-buffer
(call-process "notmuch" nil t nil
"search" "--format=sexp" "--output=threads"
message-id)
(goto-char (point-min))
(read (current-buffer)))))
(cl-case (length threads)
(0
(user-error "No thread found for %S" message-id))
(1
(concat "thread:" (car threads)))
(t
(error "Got multiple threads for %S" message-id)))))
;;;###autoload
(defun km/notmuch-tree-from-show-current-query (&optional ignore-context)
(interactive "P")
(let* ((mid (or (notmuch-show-get-message-id)
(error "No message ID found")))
(tid (if (and notmuch-show-thread-id
;; notmuch's variant works with
;; notmuch-show-thread-id ...
(string-prefix-p "thread:" notmuch-show-thread-id))
notmuch-show-thread-id
;; ... but there are cases where this is set to the
;; message ID, leading to the tree result that is
;; always narrowed to the message. Try harder to get
;; the actual thread ID.
(km/notmuch-thread-id-from-message-id mid)))
(notmuch-show-query-context (and (not ignore-context)
notmuch-show-query-context)))
(notmuch-tree tid notmuch-show-query-context mid)))
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-11-22 18:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-22 17:27 notmuch.el question: reading all messages in thread Matt Armstrong
2022-11-22 18:29 ` Kyle Meyer
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).