From 8914cfc36015513d4452d855bad7c207251f0f4c Mon Sep 17 00:00:00 2001 From: Akib Azmain Turja Date: Mon, 27 Jun 2022 18:35:54 +0600 Subject: [PATCH] Fix error when the preselected candidate is not selected --- corfu-mouse.el | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/corfu-mouse.el b/corfu-mouse.el index 13a0657..5029073 100644 --- a/corfu-mouse.el +++ b/corfu-mouse.el @@ -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))))))