[PATCH v2 1/4] emacs: reuse buffer when refreshing searches
Mark Walters
markwalters1009 at gmail.com
Sun Sep 25 03:17:49 PDT 2016
On Sat, 24 Sep 2016, Ioan-Adrian Ratiu <adi at 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 at 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
More information about the notmuch
mailing list