branch: externals/consult commit 11857fdec772b24a7e83fe9a9f494bcdfd2707f7 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@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))