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 2f755aaffe
commit 5ac126624c
No known key found for this signature in database
GPG key ID: 6FF1A01853A47A66
2 changed files with 8 additions and 5 deletions

View file

@ -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 ()

View file

@ -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."