From 787d040ba66fac86f309af95ff367589b5671a87 Mon Sep 17 00:00:00 2001 From: Luigi Sartor Piucco Date: Wed, 26 Jul 2023 19:57:21 -0300 Subject: [PATCH] feat(corfu): add snippets Yasnippet is now properly integrated! A previosly-unset default has now been given to `corfu-on-exact-match`. With snippets, it causes immediate expansion upon single match by default, so we set it to nil and recommend against changing it in the README. --- modules/completion/corfu/README.org | 3 ++- modules/completion/corfu/config.el | 6 ++++++ modules/completion/corfu/packages.el | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/completion/corfu/README.org b/modules/completion/corfu/README.org index f98c13675..689855e81 100644 --- a/modules/completion/corfu/README.org +++ b/modules/completion/corfu/README.org @@ -33,6 +33,7 @@ highly non-native, but has some extra features and more maturity. - [[doom-package:nerd-icons-completion]] if [[doom-module::completion corfu +icons]] - [[doom-package:orderless]] if [[doom-module::completion corfu +orderless]] - [[doom-package:corfu-terminal]] if [[doom-module::os tty]] +- [[doom-package:yasnippet-capf]] if [[doom-module::editor snippets]] ** Hacks /No hacks documented for this module./ @@ -50,7 +51,7 @@ languages may lack code completion support altogether). Run ~$ doom doctor~ to find out if you're missing any dependencies. Note that corfu may have support for completions in languages that have no development intelligence, since it supports generic, context insensitive candidates such as file names or recurring -words. +words. Snippets may also appear in the candidate list if available. * TODO Usage #+begin_quote diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el index fad4c6dfc..b1e38a844 100644 --- a/modules/completion/corfu/config.el +++ b/modules/completion/corfu/config.el @@ -163,6 +163,12 @@ Meant as :around advice for `corfu--recompute'." (add-hook! (org-mode markdown-mode) (+corfu--add-capf! #'cape-elisp-block)) (advice-add #'lsp-completion-at-point :around #'cape-wrap-noninterruptible)) +(use-package! yasnippet-capf + :after corfu + :config + (add-hook 'yas-minor-mode-hook + (lambda () (add-to-list 'completion-at-point-functions #'yasnippet-capf)))) + (use-package! corfu-terminal :when (not (display-graphic-p)) :hook (corfu-mode . corfu-terminal-mode)) diff --git a/modules/completion/corfu/packages.el b/modules/completion/corfu/packages.el index 7363ae0f9..b5a1b6bdb 100644 --- a/modules/completion/corfu/packages.el +++ b/modules/completion/corfu/packages.el @@ -9,3 +9,5 @@ (package! orderless :pin "d6b402a89e234d0e6166247ed6025f9acc8b4d9a")) (when (modulep! :os tty) (package! corfu-terminal :pin "501548c3d51f926c687e8cd838c5865ec45d03cc")) +(when (modulep! :editor snippets) + (package! yasnippet-capf :pin "40654214db7a44db3a99321447632b43a10fae57"))