From 4c3c027a9630d8ce804e1ed31ca7a7e9ec670592 Mon Sep 17 00:00:00 2001 From: "Itai Y. Efrat" Date: Sat, 31 Jul 2021 10:43:00 +0300 Subject: [PATCH] feat(vertico): better crm interface --- modules/completion/vertico/README.org | 9 +++++++++ modules/completion/vertico/autoload/vertico.el | 17 +++++++++++++++++ modules/completion/vertico/config.el | 5 ++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/completion/vertico/README.org b/modules/completion/vertico/README.org index 7b6cb339a..0d04b2a2f 100644 --- a/modules/completion/vertico/README.org +++ b/modules/completion/vertico/README.org @@ -18,6 +18,7 @@ - [[#general][General]] - [[#jump-to-files-buffers-or-projects][Jump to files, buffers or projects]] - [[#search][Search]] + - [[#consult-modifications][Consult modifications]] - [[#marginalia][Marginalia]] - [[#orderless-filtering][Orderless filtering]] - [[#configuration][Configuration]] @@ -182,6 +183,14 @@ or the last workspace by typing =0 SPC=. | =SPC s P= | Search another project | | =SPC s s= | Search the current buffer (incrementally) | +** Consult modifications +This module modifies the default keybindings used in +~consult-completing-read-multiple~: +| Keybind | Description | +|---------+-------------------------------------------------------------| +| =TAB= | Select or deselect current candidate | +| =RET= | Enters selected candidates (also toggles current candidate) | + ** Marginalia | Keybind | Description | |---------+---------------------------------| diff --git a/modules/completion/vertico/autoload/vertico.el b/modules/completion/vertico/autoload/vertico.el index 55024b7a8..0222134bf 100644 --- a/modules/completion/vertico/autoload/vertico.el +++ b/modules/completion/vertico/autoload/vertico.el @@ -237,3 +237,20 @@ targets." (if (cdr targets) "…" ""))) (if prefix (lookup-key keymap prefix) keymap) nil nil t)))) + +;;;###autoload +(defun +vertico/crm-select () + "Enter candidate in `consult-completing-read-multiple'" + (interactive) + (let ((idx vertico--index)) + (unless (get-text-property 0 'consult--crm-selected (nth vertico--index vertico--candidates)) + (setq idx (1+ idx))) + (run-at-time 0 nil (cmd! (vertico--goto idx) (vertico--exhibit)))) + (vertico-exit)) + +;;;###autoload +(defun +vertico/crm-exit () + "Enter candidate in `consult-completing-read-multiple'" + (interactive) + (run-at-time 0 nil #'vertico-exit) + (vertico-exit)) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 33d5f8192..aca917c17 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -118,7 +118,10 @@ overrides `completion-styles' during company completion sessions.") :category buffer :state ,#'consult--buffer-state :items ,(lambda () (mapcar #'buffer-name (org-buffer-list))))) - (add-to-list 'consult-buffer-sources '+vertico--consult-org-source 'append))) + (add-to-list 'consult-buffer-sources '+vertico--consult-org-source 'append)) + (map! :map consult-crm-map + :desc "Select candidate" "TAB" #'+vertico/crm-select + :desc "Enter candidates" "RET" #'+vertico/crm-exit)) (use-package! consult-flycheck