Fix error when the preselected candidate is not selected

This commit is contained in:
Akib Azmain Turja 2022-06-27 18:35:54 +06:00
parent 232592c6b8
commit 8914cfc360
No known key found for this signature in database
GPG Key ID: 5535FCF54D88616B
1 changed files with 22 additions and 15 deletions

View File

@ -53,17 +53,19 @@
(defun corfu-mouse--candidate-map (index)
"Return keymap for candidate with INDEX."
(let ((map (make-sparse-keymap)))
(define-key map [mouse-1]
(lambda ()
(interactive)
(corfu--goto index)
(corfu-insert)))
(define-key map [mouse-3]
(lambda ()
(interactive)
(corfu--goto index)
(corfu-complete)))
(let ((map (make-sparse-keymap))
(mouse-1 (make-symbol "corfu-mouse--on-mouse-1"))
(mouse-3 (make-symbol "corfu-mouse--on-mouse-3")))
(fset mouse-1 (lambda ()
(interactive)
(corfu--goto index)
(corfu-insert)))
(fset mouse-3 (lambda ()
(interactive)
(corfu--goto index)
(corfu-complete)))
(define-key map [mouse-1] mouse-1)
(define-key map [mouse-3] mouse-3)
map))
(defun corfu-mouse--format-candidates (fcands)
@ -117,7 +119,10 @@ FCANDS is the return value of `corfu--format-candidates'."
:global t :group 'corfu
(let ((scroll-events '(mouse-4 mouse-5 down-mouse-4 down-mouse-5
double-mouse-4 double-mouse-5
triple-mouse-4 triple-mouse-5)))
triple-mouse-4 triple-mouse-5))
(continue-commands '("corfu-mouse--on-mouse-1"
"corfu-mouse--on-mouse-3"
mwheel-scroll mouse-drag-region)))
(cond
(corfu-mouse-mode
(advice-add #'corfu--format-candidates :filter-return
@ -126,7 +131,8 @@ FCANDS is the return value of `corfu--format-candidates'."
#'corfu-mouse--setup-scrolling)
(advice-add #'corfu--post-command :before
#'corfu-mouse--post-command-set-buffer)
(push #'mwheel-scroll corfu-continue-commands)
(setq corfu-continue-commands
(append corfu-continue-commands continue-commands))
(dolist (event scroll-events)
(define-key corfu--mouse-ignore-map (vector event) nil)))
(t
@ -135,8 +141,9 @@ FCANDS is the return value of `corfu--format-candidates'."
(advice-remove #'corfu--make-buffer #'corfu-mouse--setup-scrolling)
(advice-remove #'corfu--post-command
#'corfu-mouse--post-command-set-buffer)
(setq corfu-continue-commands
(delete #'mwheel-scroll corfu-continue-commands))
(dolist (command continue-commands)
(setq corfu-continue-commands
(delete command corfu-continue-commands)))
(dolist (event scroll-events)
(define-key corfu--mouse-ignore-map (vector event) #'ignore))))))