现在emacs补全代码主要用什么?

以前emacs不全代码用auto-complete这些,现在主要用啥补全?

我觉得经典老包company就挺好的

1 个赞

lsp-bridge, 开箱即用

1 个赞

corfu 也不错

minad/corfu: :desert_island: corfu.el - COmpletion in Region FUnction

相比 company 会轻一点

现在用自带的 tab 键

emacs的补全感觉是个大坑,历史包袱太大了。

capf 的设计局限性太大了。capf 的同步+假设最多同时只有一个 capf 能够激活的设计太不灵活了。即使是 cape,那个方法也太 hack 了,并不灵活。

其实我更希望有一个近乎于“事实标准”的新的补全后端的设计。就像 neovim 那样。

比如 neovim, 原生的 omni 补全框架就是类似于 emacs 的 capf,假设只能有一个后端存在的设计。然后因为 omni 设计太烂了,neovim 社区基本上抛弃了 omni。nvim-cmp 就是近乎于“事实标准”的补全前端,然后其他插件会基于 cmp 来开发新的补全后端。

现行的基于 capf 来修修补补,体验太差了。不管是 company 还是 corfu。都有很大的局限。尤其是对于异步时间较长的补全(比如 copilot或者 codeium),都不可能做到支持。

lsp-bridge 很好,可惜基于 python 就没办法成为 nvim-cmp 那样的事实标准了。

2 个赞

实际上 capf 不叫历史包袱,在 company/auto-complete 还流行的时候根本没人鸟 capf,company-capf.el 也是后来项目转让给 FSF 后加的,以前根本用不到这个后端,比如 SLIME 就是用 slime-company,不经过 capf。Emacs 25 那会 capf 连 emacs lisp 补全都没做好。Emacs 28 开始自帯 eglot + emacs lisp 补全用都 capf 实现并改进下了匹配算法,用不到 company 了(在有了 company-capf 后也就没加新后端了)让只支持 capf 的親儿子项目 corfu 占了用户主体才“倒逼”社区都用 capf 的 API 的,实际也就这几年的事。

4 个赞

lsp-bridge, 开箱即用。 每天我都用!排行榜第一!

1 个赞