** Corfu
#+BEGIN_SRC emacs-lisp
(use-package corfu
- :ensure t
- :demand t
;; Optional customizations
:custom
(corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
(corfu-auto t) ;; Enable auto completion
(corfu-separator ?\s) ;; Orderless field separator
- (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
- (corfu-quit-no-match nil) ;; Never quit, even if there is no match
+ (corfu-quit-at-boundary t)
+ (corfu-quit-no-match 'separator)
(corfu-preview-current nil) ;; Disable current candidate preview
(corfu-preselect 'prompt) ;; Preselect the prompt
(corfu-on-exact-match nil) ;; Configure handling of exact matches
(corfu-scroll-margin 5) ;; Use scroll margin
+ :bind (
+ :map corfu-map
+ ("M-m" , corfu-move-to-minibuffer)
+ )
+ :init
+ (global-corfu-mode)
+ (setq completion-cycle-threshold 3)
+ (setq tab-always-indent 'complete)
:config
- (global-corfu-mode))
+ (defun corfu-move-to-minibuffer ()
+ (interactive)
+ (when completion-in-region--data
+ (let ((completion-extra-properties corfu--extra)
+ completion-cycle-threshold completion-cycling)
+ (apply #'consult-completion-in-region completion-in-region--data))))
+ (add-to-list 'corfu-continue-commands #'corfu-move-to-minibuffer)
+ )
#+END_SRC
** Dabbrv
#+BEGIN_SRC emacs-lisp