lspce - rust实现的LSP客户端

我一直这么用,不过以前用lsp-mode和eglot的时候是按需添加到mode hook或者从其中删除。

经常看到这么个段子:代码里有个sleep(2000),等客户反映性能不够的时候,改成sleep(1000),性能立马提升1倍。类似的事儿也发生在lspce里了。

lspce不卡手,但经常感觉肉肉的,不利索。昨天改某个功能的时候打开了日志,无意中看到server处理某个请求只花了几毫秒,但lspce在100毫秒之后才读到响应。检查了代码发现有个地方sit-for了100毫秒,改到10之后手感马上好多了,性能有了“巨大”提升。

4 个赞

eglot 不用加 hook 吧,我也是一直手动开启的

描述起来可能不容易说清楚。大概就是:我以前是eglot/lsp-mode都装了,有个配置来确定某种文件用eglot还是lsp-mode,还加了个函数来动态修改用哪个客户端等(还有其它辅助函数),因为用函数包装在一起了,所以就用了hook。

Workspace configuration 还是挺有用的。比如pylsp的插件全靠这来enable和disable。大神能考虑一下这个功能吗?多谢了。

看过两眼协议里这个功能的描述,但是没有仔细研究,不清楚是用来解决什么问题的(必要性在哪儿?使用场景?这些我目前不清楚)。

我再找时间研究下看看,有必要我就加上,不过可能没那么快,至少得到年后了。

另外我自己尝试过用lspce+pylsp写python,补全、跳转和错误提醒这些基本功能好像都没问题。

多谢大神考虑。pylsp是能用的。而且我觉得find definition更快了。主要是想修改默认设置的时候好像必须用workspace configure。比如不用pycodestyle,而用flake8之类的。python-lsp-server/CONFIGURATION.md at develop · python-lsp/python-lsp-server · GitHub

大神,最近我更新到emacs 29, eglot 快了很多。所以没那么急需上次说的功能了。多谢多谢,新年快乐!

1 个赞

好嘞,看来Emacs 29(+eglot)还是可以再尝试下。

我也短暂尝试过Emacs 29,倒没专门试过eglot。我用了下java-ts-mode,缩进有问题就换回28了。

P.S. 新年快乐!

试用了一下,clangd,按get started配置,(lspce-set-log-file “/tmp/lspce.log”) 很快lspce.log涨到了7G。可能是我这边的项目规模比较大?

可能是跟项目比较大有关,也跟你日志级别设置有关,可以用lspce-get-log-level看一下日志级别,可以用lspce-set-log-level-[xxxxx]修改日志级别。

可以看看日志里打印的都是啥,是不是都是debug日志?