branch: externals/vertico
commit afec802d1ade246e76df33ab11cef01c031c39fc
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Do not use minibuffer-setup-hook for idempotency
---
extensions/vertico-multiform.el | 8 +++++---
vertico.el | 8 ++++++--
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index e1fbec27ff3..21b3e8b6088 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -175,11 +175,13 @@ The keys in LIST can be symbols or regexps."
menu)
(cl-defmethod vertico--advice (&context (vertico-multiform-mode (eql t)) &rest
app)
- (unwind-protect
- (dlet ((completion-eager-display nil)) ;; Available on Emacs 31
+ (unwind-protect ;; Do not use `minibuffer-setup-hook' for idempotency.
+ (progn
(vertico-multiform--toggle -1)
- (minibuffer-with-setup-hook #'vertico-multiform--setup
+ (add-hook 'minibuffer-setup-hook #'vertico-multiform--setup)
+ (dlet ((completion-eager-display nil)) ;; Available on Emacs 31
(apply app)))
+ (remove-hook 'minibuffer-setup-hook #'vertico-multiform--setup)
(vertico-multiform--toggle 1)))
(defun vertico-multiform--toggle-mode-1 (mode arg)
diff --git a/vertico.el b/vertico.el
index 90f47929923..5cd257c843b 100644
--- a/vertico.el
+++ b/vertico.el
@@ -624,8 +624,12 @@ the stack trace is shown in the *Messages* buffer."
(cl-defgeneric vertico--advice (&rest app)
"Advice for completion function, apply APP."
- (dlet ((completion-eager-display nil)) ;; Available on Emacs 31
- (minibuffer-with-setup-hook #'vertico--setup (apply app))))
+ (unwind-protect ;; Do not use `minibuffer-setup-hook' for idempotency.
+ (progn
+ (add-hook 'minibuffer-setup-hook #'vertico--setup)
+ (dlet ((completion-eager-display nil)) ;; Available on Emacs 31
+ (apply app)))
+ (remove-hook 'minibuffer-setup-hook #'vertico--setup)))
(defun vertico-first ()
"Go to first candidate, or to the prompt when the first candidate is
selected."