[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/consult 4e553d5: consult-completing-read-multiple: Add enhanced keybindings for Vertico and Selectrum (Fix #353),
ELPA Syncer <=