summaryrefslogtreecommitdiff
path: root/corfu.el
diff options
context:
space:
mode:
Diffstat (limited to 'corfu.el')
-rw-r--r--corfu.el13
1 files changed, 9 insertions, 4 deletions
diff --git a/corfu.el b/corfu.el
index 3081cd1..41ecb04 100644
--- a/corfu.el
+++ b/corfu.el
@@ -829,6 +829,7 @@ the last command must be listed in `corfu-continue-commands'."
(defun corfu--preview-current (beg end)
"Show current candidate as overlay given BEG and END."
(when (corfu--preview-current-p)
+ (corfu--preview-delete)
(setq beg (+ beg (length corfu--base))
corfu--preview-ov (make-overlay beg end nil))
(overlay-put corfu--preview-ov 'priority 1000)
@@ -836,6 +837,12 @@ the last command must be listed in `corfu-continue-commands'."
(overlay-put corfu--preview-ov (if (= beg end) 'after-string 'display)
(nth corfu--index corfu--candidates))))
+(defun corfu--preview-delete ()
+ "Delete the preview overlay."
+ (when corfu--preview-ov
+ (delete-overlay corfu--preview-ov)
+ (setq corfu--preview-ov nil)))
+
(defun corfu--window-change (_)
"Window and buffer change hook which quits Corfu."
(unless (corfu--range-valid-p)
@@ -1141,9 +1148,7 @@ A scroll bar is displayed from LO to LO+BAR."
(cl-defgeneric corfu--prepare ()
"Insert selected candidate unless command is marked to continue completion."
- (when corfu--preview-ov
- (delete-overlay corfu--preview-ov)
- (setq corfu--preview-ov nil))
+ (corfu--preview-delete)
;; Ensure that state is initialized before next Corfu command
(when (and (symbolp this-command) (string-prefix-p "corfu-" (symbol-name this-command)))
(corfu--update))
@@ -1190,7 +1195,7 @@ AUTO is non-nil when initializing auto completion."
(cl-defgeneric corfu--teardown (buffer)
"Tear-down Corfu in BUFFER, which might be dead at this point."
(corfu--popup-hide)
- (when corfu--preview-ov (delete-overlay corfu--preview-ov))
+ (corfu--preview-delete)
(remove-hook 'post-command-hook #'corfu--post-command)
(when (buffer-live-p buffer)
(with-current-buffer buffer