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:
parent
188e73b057
commit
1603c6c7dd
3 changed files with 13 additions and 11 deletions
|
@ -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
|
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.
|
start corfu; in insert-like states, start corfu immediatelly.
|
||||||
|
|
||||||
** Exporting to the minibuffer (requires [[doom-module::completion vertico]])
|
** Exporting to the minibuffer
|
||||||
When using the [[doom-module::completion vertico]] module, which pulls in the
|
The entries shown in the completion popup can be exported to a ~completing-read~
|
||||||
[[doom-package:consult]] package, the entries shown in the completion popup can be
|
minibuffer, giving access to all the manipulations that suite allows. Using
|
||||||
exported to a consult minibuffer, giving access to all the manipulations the
|
Vertico for instance, one could use this to export with [[doom-package:embark]] via
|
||||||
Vertico suite allows. For instance, one could use this to export with
|
[[kbd:][C-c C-l]] and get a buffer with all candidates.
|
||||||
[[doom-package:embark]] via [[kbd:][C-c C-l]] and get a buffer with all candidates.
|
|
||||||
|
|
||||||
** Manually call generic CAPFs
|
** Manually call generic CAPFs
|
||||||
Completion at point functions have the property that, when called interactively
|
Completion at point functions have the property that, when called interactively
|
||||||
|
|
|
@ -10,12 +10,13 @@
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +corfu-move-to-minibuffer ()
|
(defun +corfu-move-to-minibuffer ()
|
||||||
;; Taken from corfu's README.
|
;; Adapted from Corfu's README.
|
||||||
;; TODO: extend this to other completion front-ends.
|
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((completion-extra-properties corfu--extra)
|
(pcase completion-in-region--data
|
||||||
(completion-cycle-threshold completion-cycling))
|
(`(,_ ,_ ,table ,pred ,extras)
|
||||||
(apply #'consult-completion-in-region completion-in-region--data)))
|
(let ((completion-extra-properties extras)
|
||||||
|
completion-cycle-threshold completion-cycling)
|
||||||
|
(completing-read "Completion: " table pred nil nil 'corfu-history)))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +corfu-smart-sep-toggle-escape ()
|
(defun +corfu-smart-sep-toggle-escape ()
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
tab-always-indent (if (modulep! +tng) 'complete tab-always-indent))
|
tab-always-indent (if (modulep! +tng) 'complete tab-always-indent))
|
||||||
(add-to-list 'completion-category-overrides `(lsp-capf (styles ,@completion-styles)))
|
(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
|
(add-hook! 'minibuffer-setup-hook
|
||||||
(defun +corfu-enable-in-minibuffer ()
|
(defun +corfu-enable-in-minibuffer ()
|
||||||
"Enable Corfu in the minibuffer if `completion-at-point' is bound."
|
"Enable Corfu in the minibuffer if `completion-at-point' is bound."
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue