From ce84690dc53f8fe98d6d44b4e7dcf649f08a578c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 12 Jul 2024 19:05:31 -0400 Subject: [PATCH] feat(evil): vim completion keybinds on C-x Vim has a set of completion commands bound to the C-x prefix. We had this for company, but with this commit, we now have them for the corfu module. --- modules/completion/corfu/autoload.el | 10 ++++++++ modules/editor/evil/config.el | 34 ++++++++++++++++++---------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/modules/completion/corfu/autoload.el b/modules/completion/corfu/autoload.el index 43005c6c1..0501fc196 100644 --- a/modules/completion/corfu/autoload.el +++ b/modules/completion/corfu/autoload.el @@ -37,3 +37,13 @@ (save-excursion (backward-char 1) (insert-char ?\\))) (t (call-interactively #'corfu-insert-separator)))) + +;;;###autoload +(defun +corfu/dabbrev-this-buffer () + "Like `cape-dabbrev', but only scans current buffer." + (interactive) + (require 'cape) + (let ((cape-dabbrev-check-other-buffers nil)) + (cape-dabbrev t))) + +;;; end of autoload.el diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index 6c8b75f8d..7aa969a9a 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -576,15 +576,25 @@ directives. By default, this only recognizes C directives.") :v "gl" #'evil-lion-left :v "gL" #'evil-lion-right - ;; Omni-completion - (:when (modulep! :completion company) - (:prefix "C-x" - :i "C-l" #'+company/whole-lines - :i "C-k" #'+company/dict-or-keywords - :i "C-f" #'company-files - :i "C-]" #'company-etags - :i "s" #'company-ispell - :i "C-s" #'company-yasnippet - :i "C-o" #'company-capf - :i "C-n" #'+company/dabbrev - :i "C-p" #'+company/dabbrev-code-previous))) + ;; Emulation of Vim's omni-completion keybinds + (:prefix "C-x" + (:when (modulep! :completion company) + :i "C-l" #'+company/whole-lines + :i "C-k" #'+company/dict-or-keywords + :i "C-f" #'company-files + :i "C-]" #'company-etags + :i "s" #'company-ispell + :i "C-s" #'company-yasnippet + :i "C-o" #'company-capf + :i "C-n" #'+company/dabbrev + :i "C-p" #'+company/dabbrev-code-previous) + (:when (modulep! :completion corfu) + :i "C-l" #'cape-line + :i "C-k" #'cape-keyword + :i "C-f" #'cape-file + :i "C-]" #'complete-tag + :i "s" #'cape-dict + :i "C-s" #'yasnippet-capf + :i "C-o" #'completion-at-point + :i "C-n" #'cape-dabbrev + :i "C-p" #'+corfu/dabbrev-this-buffer)))