On Sat, 24 Sep 2016, Ioan-Adrian Ratiu <adi@adirat.com> wrote: > There's no reason to completely kill a buffer while refreshing its > search results because the buffer name is constant between refreshes > (based on the search query), only its contents may change and notmuch > search kills all local variables, so it's safe to reuse. > > Reusing the same buffer also makes it possible to do things like > refreshing a buffer which is not focused or even not shown in any > window - this will be used in the next patches to add auto-refresh > capabilities to all existing notmuch buffers + a function to call > after syncing mail to refresh everything. > > Signed-off-by: Ioan-Adrian Ratiu <adi@adirat.com> > --- > emacs/notmuch.el | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/emacs/notmuch.el b/emacs/notmuch.el > index 8e14692..05687b7 100644 > --- a/emacs/notmuch.el > +++ b/emacs/notmuch.el > @@ -984,7 +984,7 @@ the configured default sort order." > (defun notmuch-search-refresh-view () > "Refresh the current view. > > -Kills the current buffer and runs a new search with the same > +Erases the current buffer and runs a new search with the same > 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 > @@ -992,8 +992,9 @@ same relative position within the new buffer." > (let ((target-line (line-number-at-pos)) > (oldest-first notmuch-search-oldest-first) > (target-thread (notmuch-search-find-thread-id 'bare)) > - (query notmuch-search-query-string)) > - (notmuch-bury-or-kill-this-buffer) > + (query notmuch-search-query-string) > + (inhibit-read-only t)) > + (erase-buffer) Hi Something I missed previously: I think erase-buffer does not remove overlays (see the comment in notmuch-show-refresh-view). Thus it is probably worth removing them manually. I don't think there will be any visual artefacts in this case, but I think emacs's speed is quadratic in the number of overlays. Anyway I suggest adding a (remove-overlays) before or after the erase-buffer. Best wishes Mark > (notmuch-search query oldest-first target-thread target-line) > (goto-char (point-min)))) > > -- > 2.10.0