emacs/tree use notmuch-show-single-message

This is more efficient than notmuch-show-only-matching-messages, since
we do not parse the potentially large thread structure to find a
single message.

This is only a partial fix for notmuch-tree view, because displaying
the thread structure in the tree-mode window still crashes on long
threads. It is however enough to make unthreaded view handle long
threads.
This commit is contained in:
David Bremner 2021-06-26 09:04:28 -03:00
parent 563b2a0032
commit 37f84d6d21
2 changed files with 4 additions and 3 deletions

View file

@ -575,7 +575,7 @@ NOT change the database."
(with-selected-window notmuch-tree-message-window (with-selected-window notmuch-tree-message-window
(let (;; Since we are only displaying one message do not indent. (let (;; Since we are only displaying one message do not indent.
(notmuch-show-indent-messages-width 0) (notmuch-show-indent-messages-width 0)
(notmuch-show-only-matching-messages t) (notmuch-show-single-message t)
;; Ensure that `pop-to-buffer-same-window' uses the ;; Ensure that `pop-to-buffer-same-window' uses the
;; window we want it to use. ;; window we want it to use.
(display-buffer-overriding-action (display-buffer-overriding-action
@ -599,7 +599,9 @@ NOT change the database."
(when id (when id
;; We close the window to kill off un-needed buffers. ;; We close the window to kill off un-needed buffers.
(notmuch-tree-close-message-window) (notmuch-tree-close-message-window)
(notmuch-show id)))) ;; n-s-s-m is buffer local, so use inner let.
(let ((notmuch-show-single-message t))
(notmuch-show id)))))
(defun notmuch-tree-show-message (arg) (defun notmuch-tree-show-message (arg)
"Show the current message. "Show the current message.

View file

@ -26,7 +26,6 @@ test_emacs '(let ((max-lisp-eval-depth 10))
test_expect_equal_file EXPECTED.unthreaded OUTPUT test_expect_equal_file EXPECTED.unthreaded OUTPUT
test_begin_subtest "message from large thread (status)" test_begin_subtest "message from large thread (status)"
test_subtest_known_broken
output=$(test_emacs '(let ((max-lisp-eval-depth 10)) output=$(test_emacs '(let ((max-lisp-eval-depth 10))
(notmuch-unthreaded "subject:large-thread") (notmuch-unthreaded "subject:large-thread")
(notmuch-test-wait) (notmuch-test-wait)