]> git.donarmstrong.com Git - lib.git/commitdiff
tweak corfu to quit if there's no match; edit in minibuffer allowed
authorDon Armstrong <don@donarmstrong.com>
Mon, 28 Aug 2023 20:31:00 +0000 (13:31 -0700)
committerDon Armstrong <don@donarmstrong.com>
Mon, 28 Aug 2023 20:31:00 +0000 (13:31 -0700)
emacs_el/configuration/don-configuration.org

index e771943e9ac9fa6f4b411d301da76b4cae2ff4d9..cd1fd3832dda0470d87dbc1e59baf1ebd8fd14db 100644 (file)
@@ -525,22 +525,35 @@ value, scrolling continues until there is no more output.
 ** 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