emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/consult 11857fdec7: Local minibuffer-exit-hook is not e


From: ELPA Syncer
Subject: [elpa] externals/consult 11857fdec7: Local minibuffer-exit-hook is not executed if current-buffer/=minibuffer
Date: Sat, 1 Oct 2022 15:57:26 -0400 (EDT)

branch: externals/consult
commit 11857fdec772b24a7e83fe9a9f494bcdfd2707f7
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Local minibuffer-exit-hook is not executed if current-buffer/=minibuffer
---
 consult.el | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/consult.el b/consult.el
index 1afd21e1bb..9070cbc738 100644
--- a/consult.el
+++ b/consult.el
@@ -1470,19 +1470,22 @@ PREVIEW-KEY, STATE, TRANSFORM and CANDIDATE."
     (consult--minibuffer-with-setup-hook
         (if (and state preview-key)
             (lambda ()
-              (let ((exit-hook (make-symbol 
"consult--preview-minibuffer-exit")))
+              (let ((exit-hook (make-symbol 
"consult--preview-minibuffer-exit"))
+                    (depth (recursion-depth)))
                 (fset exit-hook
                       (lambda ()
-                        (when timer
-                          (cancel-timer timer)
-                          (setq timer nil))
-                        (with-selected-window (or (minibuffer-selected-window) 
(next-window))
-                          ;; STEP 3: Reset preview
-                          (when last-preview
-                            (funcall state 'preview nil))
-                          ;; STEP 4: Notify the preview function of the 
minibuffer exit
-                          (funcall state 'exit nil))))
-                (add-hook 'minibuffer-exit-hook exit-hook nil 'local))
+                        (when (= (recursion-depth) depth)
+                          (remove-hook 'minibuffer-exit-hook exit-hook)
+                          (when timer
+                            (cancel-timer timer)
+                            (setq timer nil))
+                          (with-selected-window (or 
(minibuffer-selected-window) (next-window))
+                            ;; STEP 3: Reset preview
+                            (when last-preview
+                              (funcall state 'preview nil))
+                            ;; STEP 4: Notify the preview function of the 
minibuffer exit
+                            (funcall state 'exit nil)))))
+                (add-hook 'minibuffer-exit-hook exit-hook))
               ;; STEP 1: Setup the preview function
               (with-selected-window (or (minibuffer-selected-window) 
(next-window))
                 (funcall state 'setup nil))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]