emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/consult 4e553d5: consult-completing-read-multiple: Add


From: ELPA Syncer
Subject: [elpa] externals/consult 4e553d5: consult-completing-read-multiple: Add enhanced keybindings for Vertico and Selectrum (Fix #353)
Date: Wed, 7 Jul 2021 16:57:06 -0400 (EDT)

branch: externals/consult
commit 4e553d5fff3b1774d956e8f5259cf781cf3f9929
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    consult-completing-read-multiple: Add enhanced keybindings for Vertico and 
Selectrum (Fix #353)
---
 consult-selectrum.el | 25 ++++++++++++++++++++++++-
 consult-vertico.el   | 29 +++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/consult-selectrum.el b/consult-selectrum.el
index 108391a..2422457 100644
--- a/consult-selectrum.el
+++ b/consult-selectrum.el
@@ -34,6 +34,7 @@
 (defvar selectrum--history-hash)
 (declare-function selectrum-exhibit "ext:selectrum")
 (declare-function selectrum-get-current-candidate "ext:selectrum")
+(declare-function selectrum-select-current-candidate "ext:selectrum")
 
 (defun consult-selectrum--filter-adv (orig pattern cands category highlight)
   "Advice for ORIG `consult--completion-filter' function.
@@ -83,10 +84,32 @@ SPLIT is the splitter function."
     (setq-local selectrum-highlight-candidates-function
                (consult-selectrum--split-wrap 
selectrum-highlight-candidates-function split))))
 
+(defun consult-selectrum--crm-select ()
+  "Select/deselect candidate."
+  (interactive)
+  (when (when-let (cand (selectrum-get-current-candidate))
+          (not (equal cand "")))
+    (selectrum-select-current-candidate)))
+
+(defun consult-selectrum--crm-exit ()
+  "Select/deselect candidate and exit."
+  (interactive)
+  (when (when-let (cand (selectrum-get-current-candidate))
+          (not (equal cand "")))
+    (run-at-time 0 nil #'exit-minibuffer))
+  (selectrum-select-current-candidate))
+
+(defvar consult-selectrum--crm-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap selectrum-insert-current-candidate] 
#'consult-selectrum--crm-select)
+    (define-key map [remap exit-minibuffer] #'consult-selectrum--crm-exit)
+    map))
+
 (defun consult-selectrum--crm-setup ()
   "Setup crm for Selectrum."
   (when selectrum-is-active
-    (setq-local selectrum-default-value-format nil)))
+    (setq-local selectrum-default-value-format nil)
+    (use-local-map (make-composed-keymap (list consult-selectrum--crm-map) 
(current-local-map)))))
 
 (add-hook 'consult--completion-candidate-hook #'consult-selectrum--candidate)
 (add-hook 'consult--completion-refresh-hook #'consult-selectrum--refresh)
diff --git a/consult-vertico.el b/consult-vertico.el
index 61b00c4..a098844 100644
--- a/consult-vertico.el
+++ b/consult-vertico.el
@@ -30,8 +30,10 @@
 (defvar vertico--input)
 (defvar vertico--history-hash)
 (defvar vertico--lock-candidate)
+(declare-function vertico-exit "ext:vertico")
 (declare-function vertico--exhibit "ext:vertico")
 (declare-function vertico--candidate "ext:vertico")
+(declare-function vertico--match-p "ext:vertico")
 
 (defun consult-vertico--candidate ()
   "Return current candidate for Consult preview."
@@ -46,8 +48,35 @@
             vertico--lock-candidate nil))
     (vertico--exhibit)))
 
+(defun consult-vertico--crm-select ()
+  "Select/deselect candidate."
+  (interactive)
+  (when (let ((cand (vertico--candidate)))
+          (and (vertico--match-p cand) (not (equal cand ""))))
+    (vertico-exit)))
+
+(defun consult-vertico--crm-exit ()
+  "Select/deselect candidate and exit."
+  (interactive)
+  (when (let ((cand (vertico--candidate)))
+          (and (vertico--match-p cand) (not (equal cand ""))))
+    (run-at-time 0 nil #'exit-minibuffer))
+  (vertico-exit))
+
+(defvar consult-vertico--crm-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap vertico-insert] #'consult-vertico--crm-select)
+    (define-key map [remap exit-minibuffer] #'consult-vertico--crm-exit)
+    map))
+
+(defun consult-vertico--crm-setup ()
+  "Setup crm for Vertico."
+  (when vertico--input
+    (use-local-map (make-composed-keymap (list consult-vertico--crm-map) 
(current-local-map)))))
+
 (add-hook 'consult--completion-candidate-hook #'consult-vertico--candidate)
 (add-hook 'consult--completion-refresh-hook #'consult-vertico--refresh)
+(add-hook 'consult--crm-setup-hook #'consult-vertico--crm-setup)
 
 (provide 'consult-vertico)
 ;;; consult-vertico.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]