feat(corfu): general move-to-minibuffer impl

We relied directly on consult for this, meaning it needed the vertico
module. Now, it should defer to the user's choice, including helm, ivy
and ido. Note the convention for this indirection is using the
`completing-read` API, which all such packages implement. This diverges
from Corfu's suggestion of `completion-in-region`, which only vertico
and ivy seem to implement.
This commit is contained in:
Luigi Sartor Piucco 2024-02-04 17:17:13 -03:00
parent 188e73b057
commit 1603c6c7dd
No known key found for this signature in database
GPG key ID: 6FF1A01853A47A66
3 changed files with 13 additions and 11 deletions

View file

@ -144,12 +144,11 @@ regarding your state. In normal-like states, enter insert then start corfu; in
visual-like states, perform [[help:evil-change][evil-change]] (which leaves you in insert state) then
start corfu; in insert-like states, start corfu immediatelly.
** Exporting to the minibuffer (requires [[doom-module::completion vertico]])
When using the [[doom-module::completion vertico]] module, which pulls in the
[[doom-package:consult]] package, the entries shown in the completion popup can be
exported to a consult minibuffer, giving access to all the manipulations the
Vertico suite allows. For instance, one could use this to export with
[[doom-package:embark]] via [[kbd:][C-c C-l]] and get a buffer with all candidates.
** Exporting to the minibuffer
The entries shown in the completion popup can be exported to a ~completing-read~
minibuffer, giving access to all the manipulations that suite allows. Using
Vertico for instance, one could use this to export with [[doom-package:embark]] via
[[kbd:][C-c C-l]] and get a buffer with all candidates.
** Manually call generic CAPFs
Completion at point functions have the property that, when called interactively

View file

@ -10,12 +10,13 @@
;;;###autoload
(defun +corfu-move-to-minibuffer ()
;; Taken from corfu's README.
;; TODO: extend this to other completion front-ends.
;; Adapted from Corfu's README.
(interactive)
(let ((completion-extra-properties corfu--extra)
(completion-cycle-threshold completion-cycling))
(apply #'consult-completion-in-region completion-in-region--data)))
(pcase completion-in-region--data
(`(,_ ,_ ,table ,pred ,extras)
(let ((completion-extra-properties extras)
completion-cycle-threshold completion-cycling)
(completing-read "Completion: " table pred nil nil 'corfu-history)))))
;;;###autoload
(defun +corfu-smart-sep-toggle-escape ()

View file

@ -33,6 +33,8 @@
tab-always-indent (if (modulep! +tng) 'complete tab-always-indent))
(add-to-list 'completion-category-overrides `(lsp-capf (styles ,@completion-styles)))
(add-to-list 'corfu-continue-commands #'+corfu-move-to-minibuffer)
(add-hook! 'minibuffer-setup-hook
(defun +corfu-enable-in-minibuffer ()
"Enable Corfu in the minibuffer if `completion-at-point' is bound."