When moving between message in a tree or show buffer, the message at point is marked as read. Likewise when creating such a buffer, then the message that is initially at point is supposed to be marked as read as well.
The latter worked for `notmuch-show' but not for `notmuch-tree'. Press "RET" or "M-RET" in a search buffer to observe these behaviors. In both cases the marking is supposed to be done by the function `notmuch-show-command-hook'. In the case of `notmuch-show' that function is added directly to `post-command-hook'. `notmuch-tree' instead adds the function `notmuch-tree-command-hook' to `post-command-hook' and that calls `notmuch-show-command-hook', in the respective show buffer, but of course only if that exists. Because the tree buffer is created asynchronously, the show buffer doesn't exist yet by the time the `post-command-hook' is run, so we have to explicitly run `notmuch-tree-command-hook' once the show buffer exists. The show buffer is created when `notmuch-tree-goto-and-insert-msg' calls `notmuch-tree-show-message-in'. `notmuch-tree-process-filter' is what finally brings us here. --- emacs/notmuch-tree.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index 13007a13..d9265fd5 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -949,7 +949,8 @@ (defun notmuch-tree-goto-and-insert-msg (msg) (goto-char (point-max)) (forward-line -1) (when notmuch-tree-open-target - (notmuch-tree-show-message-in))))) + (notmuch-tree-show-message-in) + (notmuch-tree-command-hook))))) (defun notmuch-tree-insert-tree (tree depth tree-status first last) "Insert the message tree TREE at depth DEPTH in the current thread. -- 2.30.1 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org