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

请问有什么好的方法关闭某种mode对lsp-bridge的hook吗?我在org-mode里面不想用wenls,但是想在org文件的代码块(比如python代码块)里面使用 lsp-bridge. 比较丑陋的方法是把 lsp-bridge-default-mode-hooks 里面的 org-mode 直接注释掉。

1 个赞

我晚上加一个选项,这样就不用硬改alist了

我加了一个 lsp-bridge-use-wenls-in-org-mode 选项, 默认 wenls 不在 org-mode 中启用。

@twiddling

1 个赞

好的,感谢为这个我自己都还没谱的语言服务专门加一个开关,:smile:

大佬,更新下代码,补全显示成这个样子了!

我才检查了, 没问题。

问问题前一定要注意先自己 emacs -Q 之前再提问, 检查是不是自己配置或者升级Emacs本身导致的。

emacs -Q也是= = 我记得之前说没装all-the-icons 是不是还有什么图片扩展没装

写了一下 lsp-bridge 远程服务器代码补全的实现思路到 远程文件补全 · Issue #357 · manateelazycat/lsp-bridge · GitHub , 这个原理能够实现就是 VSCode 同等远程补全的性能。

欢迎好汉挑战, 我本人没有这种需求和动力, 仅仅提供理论方案, 大家不要对这个期待太高。 :joy:

过两天你就在这里告诉我们你已经实现了 :grin:

:grinning: :grinning: :grinning: :grinning:

vue 写的 tsx 文件,使用typescript 服务, codeaction 没有报错但是操作失败,不知道如何处理 屏幕录制2022-09-21 09.38.29

在函数

里面打印一下,看看哪里是否有解析错误?

不会的,要真能达到我理论设计,最起码要先写个模块彻底替代tramp,emacs的tramp卡到基本等于废材。

2 个赞

@happyo 我今天用 Cgroups 限制了一下 TabNine 和 TabNine-Deep-Local 这两个进程的CPU使用率, 限制高了50%没用, 限制低了, TabNine计算资源不够太慢了也不行。

我分析了一下, 卡顿主要是因为 lsp-bridge/acm.el at 3a7e2403a858208145619be37522f788a56d8de9 · manateelazycat/lsp-bridge · GitHub 不能在 acm-update-candidates 中调用 tabnine-bridge-query , 这样会导致LSP或者别的后端有数据的时候, tabnine-bridge-query 会执行多次, 这样 TabNine 稍微卡就卡的是 acm 前端绘制。

有两种优化方式:

  1. TabNine的进程在Python端用线程来控制, TabNine 进程没有返回结果, 就不要骚扰 Emacs , acm也不处理, 仿照 Search Words 的Python实现: lsp-bridge/search_file_words.py at 3a7e2403a858208145619be37522f788a56d8de9 · manateelazycat/lsp-bridge · GitHub
  2. Idile以后,再调用 tabnine-bridge-query , tabnine-bridge-query 返回结果以后, 设置 setq-local 再调用 acm-update 异步刷新 acm 前端内容, idle 实现可以参考 lsp-bridge/lsp-bridge.el at 3a7e2403a858208145619be37522f788a56d8de9 · manateelazycat/lsp-bridge · GitHub

我推荐用第一种方式, 我感觉 TabNine 瞬间飙 100% 其实不是大问题, CPU占用马上就会下来, 主要是现在的实现不对, TabNine慢一点卡的是 acm 前端。

理论上, tabnine-bridge.el 的代码都应该丢在 Python 进程的线程去实现, TabNine再慢都要影响 acm 显示。

可以试一下GitHub - theFool32/tabnine-capf: A capf version of company-tabnine: https://github.com/TommyX12/company-tabnine 能不能解决这个问题。这个tabnine带了一个类似lsp-bridge的python端,可能能通过方案1接入acm

看着可以啊, 都是用的 python epc

嗯嗯,我用第一种方式研究一下

好像可以的,我把这些代码挪过来试试

不用了, 我已经重写了 TabNine 后端了, 现在非常流畅。

这个代码不行, 有 bug, 主要是 Python 端没有用线程处理, 请求快了会出问题。