From 4da5d5718fc89deb0d6f480011eb27e768f2c759 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Wed, 2 Aug 2023 14:49:32 +0200 Subject: [PATCH] emacs: Autocomplete tweaks --- modules/base/emacs/base-init.el | 22 +++++++++++++++++++--- modules/development/default.nix | 11 +++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/modules/base/emacs/base-init.el b/modules/base/emacs/base-init.el index 0b36f0ac..126d0ab0 100644 --- a/modules/base/emacs/base-init.el +++ b/modules/base/emacs/base-init.el @@ -24,6 +24,8 @@ :global-prefix "C-SPC" ) + ;; Overwrite evil's evil-complete-next + (imap "C-n" 'completion-at-point) (nmap "" 'save-buffer) (lmap "" nil ;; Unbind SPC, I don't use it for navigation anyway. @@ -101,12 +103,26 @@ :config (ido-mode nil) ) +;; Handy completion-at-point-functions +(use-package cape + :hook + (prog-mode . chvp--setup-capfs) + (text-mode . chvp--setup-capfs) + :config + (defun chvp--setup-capfs () + (add-hook 'completion-at-point-functions #'tempel-complete -50 t) + (add-hook 'completion-at-point-functions #'cape-file 10 t) + (add-hook 'completion-at-point-functions #'dabbrev-capf 15 t) + (add-hook 'completion-at-point-functions #'cape-line 20 t) + ) + ) + ;; Autocomplete (use-package corfu :diminish (corfu-mode) :custom (corfu-cycle t "Enable cycling through completions") - (corfu-auto t "Auto completion") + (corfu-auto t "Show completion preview by default") (corfu-auto-prefix 2 "Show completion after two characters") :config (global-corfu-mode) @@ -263,14 +279,14 @@ ;; Tempel (snippet expansion) (use-package tempel + :demand t + :after cape ;; This is not very nice, but let's just assume that development machines have my nixos-config checked out :custom (tempel-path "/home/charlotte/repos/nixos-config/modules/base/emacs/snippets/*.eld") :general (lmap "t i" '(tempel-insert :which-key "Insert template") ) - :config - (setq completion-at-point-functions (cons #'tempel-complete completion-at-point-functions)) ) ;; List item selection interface diff --git a/modules/development/default.nix b/modules/development/default.nix index c087f779..83930b86 100644 --- a/modules/development/default.nix +++ b/modules/development/default.nix @@ -44,6 +44,17 @@ "SPC n" '(flymake-goto-next-error :which-key "Next error") "SPC p" '(flymake-goto-prev-error :which-key "Previous error") ) + :hook (eglot-managed-mode . chvp--eglot-capf) + :config + (advice-add 'eglot-completion-at-point :around #'cape-wrap-buster) + (defun chvp--eglot-capf () + (setq-local completion-at-point-functions + (list (cape-super-capf + #'eglot-completion-at-point + #'tempel-complete) + #'cape-file + #'dabbrev-capf + #'cape-line))) ) ;; Forth syntax support