刚才在emacs29上简单配置开启了eglot。但是索引代码的时候,找不到。
有个函数 init()
同一个文件中,通过一个宏,注册到了一个变量上。类似这种:
REGISTER(node) = {
.main_init = init,
在init函数定义处,通过M-?查找引用。它找不到注册那一行。lsp是可以找到的。
另外,lsp有个lsp-treemacs-call-hierarchy,eglot中我也没搜到。
是缺什么配置之类的么?各位的eglot都咋配置的?
1 个赞
是的,eglot 对 lsp features 的实现就是比 lsp-mode 少,有很多的feature没有实现。
此外还有很重要的一点,eglot不支持多个lsp连接同一个buffer,作者本人似乎还表达过对实现这个功能的疑惑?他似乎认为这种情况最好是有一个外部的大 LSP 来把不同的功能分派给其他的小 lsp 了,但是很明显这种构想过于理想化了。
多个lsp server,web开发很适合。
外部lsp server不现实,因为不同lsp server响应速度不一样,来了数据就要发给emacs
多个lsp server混合用,现在只有lsp-mode和lsp-bridge支持。
1 个赞
那我先用着lsp好了。这几个功能我还是挺需要的。其他花里胡哨的可以省,索引的功能为啥要省掉,不好。
一个文件开多个lsp,我目前还没用得上。
目前lsp-mode的功能是最全的,当然也是最耗资源的,需要自行定制下,关掉一些不需要的功能。
对我而言,eglot目前最缺的是文档的显示,虽然可以借助eldoc-box,但是功能还是孱弱不少。尤其是鼠标下hover显示当前符号的文档,lsp-mode和vscode是最接近的。还有一个实用的是breadcrumb,有第三方代替: joaotavora/breadcrumb: Emacs headerline indication of where you are in a large project (github.com)。sideline、peek也有独立的包可以使用,个人用得不多。其他功能就大同小异了。eglot最大的优势就是默认集成,不用单独安装,另外确实要轻量级一些。
1 个赞
Lenic
6
还有一点儿就是,不知道为什么 eglot 补全的准确程度差很多,我在一个函数(TypeScript)内部补全参数,lsp-mode 是正常的,但是 eglot 就会帮我在全项目中搜寻,卡很久,补全的量很大,但是我需要补全的参数,在很长很长的列表后面。
名词/术语的使用还是要严谨一些,虽然大家都知道你在说什么。
看前面的回帖,大家都没有被你影响而混淆 lsp
和 lsp-mode
。