aboutsummaryrefslogtreecommitdiff
path: root/emacs/notmuch.el
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-09-12 22:03:50 -0300
committerDavid Bremner <david@tethera.net>2021-12-04 12:11:52 -0400
commiteafb033d3220f1388f434dc29618924659fc2d33 (patch)
tree6de5d2f6f87d0d1683a16749197384bcdf2a75d1 /emacs/notmuch.el
parent1e7d33961e626488b09b56c8543e8edf00648670 (diff)
emacs: run notmuch-search-hook lazily
In message id:YT3ueuZHKW931NW3@localhost, Fabio Natali isolated a visual glitch caused by running notmuch-search-hook too early. This change moves the running of that hook to notmuch-search-process-filter, which ensures there is some output in the buffer before running the hook. Since n-s-p-f can be called many times for a given buffer, add a buffer local flag to make sure it is only run once per buffer.
Diffstat (limited to 'emacs/notmuch.el')
-rw-r--r--emacs/notmuch.el15
1 files changed, 12 insertions, 3 deletions
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index fa061693..85a54706 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -880,6 +880,14 @@ sets the :orig-tag property."
(setq notmuch-search-target-thread "found")
(goto-char pos))))
+(defvar-local notmuch--search-hook-run nil
+ "Flag used to ensure the notmuch-search-hook is only run once per buffer")
+
+(defun notmuch--search-hook-wrapper ()
+ (unless notmuch--search-hook-run
+ (setq notmuch--search-hook-run t)
+ (run-hooks 'notmuch-search-hook)))
+
(defun notmuch-search-process-filter (proc string)
"Process and filter the output of \"notmuch search\"."
(let ((results-buf (process-buffer proc))
@@ -892,7 +900,9 @@ sets the :orig-tag property."
(goto-char (point-max))
(insert string))
(notmuch-sexp-parse-partial-list 'notmuch-search-append-result
- results-buf)))))
+ results-buf))
+ (with-current-buffer results-buf
+ (notmuch--search-hook-wrapper)))))
;;; Commands (and some helper functions used by them)
@@ -1036,8 +1046,7 @@ the configured default sort order."
(process-put proc 'parse-buf
(generate-new-buffer " *notmuch search parse*"))
(set-process-filter proc 'notmuch-search-process-filter)
- (set-process-query-on-exit-flag proc nil))))
- (run-hooks 'notmuch-search-hook)))
+ (set-process-query-on-exit-flag proc nil))))))
(defun notmuch-search-refresh-view ()
"Refresh the current view.