From 6be03c1761b0b586f7b52bb394131e34fe7534be Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 3 Nov 2009 11:54:34 -0800 Subject: [PATCH] notmuch.el: Preserve current thread when refreshing search results. Otherwise, try to keep point in the same place, (such as when the current thread has been archived away). --- notmuch.el | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/notmuch.el b/notmuch.el index c00d3595..a7e334e4 100644 --- a/notmuch.el +++ b/notmuch.el @@ -420,11 +420,20 @@ Before moving, also remove the \"unread\" tag from the current message." "Refresh the current view. Kills the current buffer and runs a new search with the same -query string as the current search." +query string as the current search. If the current thread is in +the new search results, then point will be placed on the same +thread. Otherwise, point will be moved to attempt to be in the +same relative position within the new buffer." (interactive) - (let ((query notmuch-search-query-string)) + (let ((here (point)) + (thread (notmuch-search-find-thread-id)) + (query notmuch-search-query-string)) (kill-this-buffer) - (notmuch-search query))) + (notmuch-search query) + (goto-char (point-min)) + (if (re-search-forward (concat "^" thread) nil t) + (beginning-of-line) + (goto-char here)))) (defun notmuch-search-filter (query) "Run \"notmuch search\" to refine the current search results.