summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2022-06-03 13:57:15 +0200
committerDaniel Mendler <mail@daniel-mendler.de>2022-06-03 13:58:41 +0200
commitb76e2e7fb7eb7d9415fd9dc72134fda048fecd46 (patch)
tree79a38287d268591c399d1f98a9ed2cb0288653e0
parent8b9d37413639a1c92f0c74f1230bddbe45e79c59 (diff)
Defer popup hiding (Fix #184)
-rw-r--r--corfu.el16
1 files changed, 9 insertions, 7 deletions
diff --git a/corfu.el b/corfu.el
index 94427f5..25dbfa2 100644
--- a/corfu.el
+++ b/corfu.el
@@ -492,10 +492,15 @@ A scroll bar is displayed from LO to LO+BAR."
(defun corfu--popup-hide ()
"Hide Corfu popup."
(when (frame-live-p corfu--frame)
- (make-frame-invisible corfu--frame)
- (with-current-buffer (window-buffer (frame-root-window corfu--frame))
- (let ((inhibit-read-only t))
- (erase-buffer)))))
+ ;; Redisplay such that the input becomes immediately visible before the popup
+ ;; hiding, which is slow (Issue #48). See also corresponding vertico#89.
+ (redisplay)
+ (run-at-time 0 nil (lambda ()
+ (when (frame-live-p corfu--frame)
+ (make-frame-invisible corfu--frame)
+ (with-current-buffer (window-buffer (frame-root-window corfu--frame))
+ (let ((inhibit-read-only t))
+ (erase-buffer))))))))
(defun corfu--popup-support-p ()
"Return non-nil if child frames are supported."
@@ -1071,9 +1076,6 @@ Quit if no candidate is selected."
(defun corfu--teardown ()
"Teardown Corfu."
- ;; Redisplay such that the input becomes immediately visible before the popup
- ;; hiding, which is slow (Issue #48). See also corresponding vertico#89.
- (redisplay)
(corfu--popup-hide)
(remove-hook 'pre-command-hook #'corfu--pre-command 'local)
(remove-hook 'post-command-hook #'corfu--post-command)