Corfu 补全的使用姿势

本论坛真的是神奇的地方啊,随处遇到各种大牛哇。

大佬不敢当😄,我就是用的较多一点。 我了解的材料除了官方仓库的 README 也没别的有用的了。

楼上 @theFool32 大佬分享的应该对你有帮助。

每当我要干啥的事情,一定要在论坛问一下,说不定大佬们都搞了。

我把 @theFool32 代码改改发布一个新的 corfu-english-helper 包吧。

4 个赞

感谢大佬,我新写了一个包 corfu-english-helper

大部分都基于大佬的代码,完善了一下自动模式的细节。

需要终端中用corfu的注意下,目前 corfu-popup 已经改名为 corfu-terminal,目前正在申请加入 nongnu,未来可能也会加入 elpa。

2 个赞

kind-icon 在 Windows 系统下使用有问题,给作者提了个 issue,遇到同样问题的可以关注一下:

PS:这个问题已经解决。Windows 系统下,在 custom.el 中定制一下图标的高度为 0.9 就可以了。

(custom-set-variables
 '(kind-icon-default-style
   '(:padding 0 :stroke 0 :margin 0 :radius 0 :height 0.9 :scale 1.0)))

Purcell 的Emacs配置也从 Company 切换到 Corfu了 :smile:

1 个赞

corfu是否有类似company当中company-complete-commoncompany-complete-common-or-cycle的函数?个人习惯是一步步通过过滤,边打边tab补全一些部分;至于用tab切换候选项倒是可以改,但不能补全部分实在是有点难受……

EDIT:找到了解决方案,(setq corfu-preselect-first nil)就好了

Complete common part of candidates · Issue #170 · minad/corfu · GitHub 先去 issue 搜搜

你是用的手动触发补全吗?

我尝试过配置 TAB 手动触发 Corfu,但是 TAB 在 org-mode 和 markdown-mode 下都有特殊用途。

特别是在 haskell-mode 下,不知道怎么用 TAB 去手动触发补全,因为 TAB 首先会去进行缩进。

我糊的一个命令

1 个赞

请问怎么实现 corfu-auto-prefix 在不同输入场景中使用不同值?

在输入英文时值为 3,在输入中文时值为 2。

比如在 org-roam 中作记录时的补全,希望值为 2,因为中文信息密度比英文大,无需三个汉字才出现补全。

之前在提过issue, 但能力有限,不知道怎么实现minad提的建议:

在你的场景的hook里添加: (make-local-variable 'corfu-auto-prefix) (setq corfu-auto-prefix 2)

最近找到了一个包,可以在 corfu 中使用 yasnippet 了。

配置如下:

(add-hook 'emacs-lisp-mode-hook
		  (lambda ()
			(setq-local completion-at-point-functions
						(list (cape-super-capf
							   #'cape-yasnippet
							   #'cape-dabbrev
							   #'cape-file
							   #'elisp-completion-at-point
							   ))
						cape-dabbrev-min-length 2
						cape-dabbrev-check-other-buffers t
						)))
3 个赞

在 company 补全中, 如果设置 company-show-numbers 后, 可以 用数字 来选择 补全的词

corfu 中 是用 这个 扩展吗,corfu-indexed-mode, 索引数字 到是出现了, 但 2022-09-30_16-31-11

比如 输入数字 7 后, 并没有选中 「buffer-name」, 直接 变成 「buf7」 是那里, 不对呢?

是通过这个 corfu-indexed-mode 支持的,但我没用过这个扩展,你参考下这个提问:

1 个赞

我用下来的感觉是 corfu-quickcorfu-indexed-mode 好用。我现在这块的配置是

(define-key corfu-map (kbd "M-SPC") #'corfu-quick-complete)

主要是按键要方便些。

corfu-indexed-mode 使用方法有楼上提到的,还有一种就是和 Emacs 默认输入数字前缀方法一样, C-u [x] RET

这里有个视频介绍 Corfu,以及和其他各种 Emacs 补全框架的对比。

1 个赞

试了下这一套,确实比ivy+swiper+counsel轻量很多

1 个赞

请问capf里面不同的源默认是不是按顺序触发但是只会触发一个,比如lisp模式下最前面的lisp的补全取到了返回,corfu的补全列表里就不会有排在后面的dabbrev?

如果要多个源同时出现在corfu的列表里必须使用cape-super-capf来合并是么?