Several Emacs' notmuch-show commands recenter the window by calling
`notmuch-show-message-adjust`. This is fine when these commands are
called interactively but not when used inside non-interactive
functions. An example of the problem is when `which-func-mode` is
activated: each time the user moves the point to a different line, the
window is recentered. This happens because `which-func-mode` calls
`imenu` which calls `notmuch-show-imenu-prev-index-position-function`
which calls `notmuch-show-previous-message` which recenters the
window.

This patch removes the calls to interactive commands from
`notmuch-show-imenu-prev-index-position-function`.

Idea is from Pengji Zhang <m...@pengjiz.com>.

---

Message-ID: <87ikqhvacy....@tethera.net>
---
 emacs/notmuch-show.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 14e3c698..921c0ef1 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -2686,7 +2686,9 @@ (defun notmuch-show-imenu-prev-index-position-function ()
 `imenu-prev-index-position-function'."
   (if (bobp)
       nil
-    (notmuch-show-previous-message)
+    (if (eobp)
+       (notmuch-show-move-to-message-top)
+      (notmuch-show-goto-message-previous))
     t))
 
 (defun notmuch-show-imenu-extract-index-name-function ()
-- 
2.47.0

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

Reply via email to