lsp-bridge -- 速度最快的语法补全插件

我也遇到类似的情况 ~ 特别是在 org-mode 下。

通常我在 org 下是切换到 company

可以看下 acm.el 里面的acm-update-candidates 函数, 关键代码在

(setq candidates
              (if (> (length mode-candidates) acm-snippet-insert-index)
                  (append (cl-subseq mode-candidates 0 acm-snippet-insert-index)
                          yas-candidates
                          tempel-candidates
                          (cl-subseq mode-candidates acm-snippet-insert-index)
                          tabnine-candidates)
                (append mode-candidates yas-candidates tempel-candidates tabnine-candidates)
                ))

优先级是 elisp > lsp > citre > search world > telega > yas > tempel > tabnine, 需要改优先级的话可以自己 addvice 一下这个函数 @EthanLin

2 个赞

能否让用户在配置文件层面自定义补全选项优先级?多谢了!:joy:

就是在配置文件里加个 类似这种的配置

(advice-add #'acm-update-candidates :override #'my/acm-update-candidates)

然后自己照抄一份函数代码在里面改就可以了

3 个赞

TabNine 主要用于快速补全重复长代码, 但是代价是TabNine很耗费CPU, 导致我整个电脑都慢, 所以我用了几天又禁用 TabNine 了。

@twlz0ne 大佬, 终端UI的补丁咋样了? 有没有遇到困难呀, 我看看能帮上啥忙

差不多可以发布了,但是我现在在方舱隔离,不知道什么时候能出去。

在哪里隔离呀? 大佬注意安全。

这个 tabnine 肯定有问题,我是 i7-8700,但是还是很卡手

可以试试这个https://github.com/theFool32/tabnine-capf看看卡不卡。仿 lsp-bridge 的实现方式,需要依赖 corfu。

你用的是什么系统,另外工程大概有多大。我用的是mac mini M1芯片,在大型工程中基本上没啥问题。

我这边即使一 lsp-bridge 自己的 *.el 文件都会导致卡, 我最后把 TabNine 关了。

这就奇怪了,我看了下本地tabnine占用内存大概1个g,可能是内存满了。另外你们本地tabnine的设置是啥样的啊,打开后在补全的地方输入Tabnine::config就可以打开网页进行设置,我使用的是

还有个可能是你们用了cloud,所以需要请求接口就比较慢。

我原来是 Hybird , 我改成 local 还是很慢, 我的笔记本是 Dell XPS 13 顶配, 8核32G内存。

TabNine内存占用就1GB, 但是卡那一瞬间, 我8个核的CPU都满了, 那一瞬间主要是电脑卡, 都不是Emacs卡。

我找到了个之前的帖子,说的也是这个问题,应该是tabnine本身可能会造成cpu 100%,然后我写的插件是参考tabnine-capf的,这个应该是同步的,所以会卡顿。后续试试能不能改成异步的。

主要是还需要测试一下, 同步的问题都可以参考 lsp-bridge 的设计或者 idle 的时候再请求, TabNine 这种一运行就飙CPU的程序, 我估计要用 cgroups 限制一下CPU占用的方法比较好, 但是没有测试过限制CPU以后, 会不会学习速度更慢了。

嗯嗯,我刚试下了,看cpu占用也是会猛的升起来,然后又降下去,最高的时候90%,但是emacs上不会卡,可能还跟系统有关系,mac可能限制了cpu不会超100%。

我在window 11的wslg里试了下,打开tabnine确实卡的不行,mac上对比起来完全不卡。感觉应该是tabnine自身的问题,看issue上也有很多人反馈相同的问题。

13寸的电脑写代码不会难受吗,还是台式机比较效率吧

虽然外壳是13寸的,但是屏幕大小堪比15寸,最重要的是2k屏,其实比台式机显示更多。