我的理解是 lsp-bridge 会自己判断是单文件还是项目吗,但是我运行 lsp-bridge-mode 时就是在项目根目录
你项目是git管理的吗?
我试了下 gopls 好像就是会启动两个,不过应该不是问题,有一个正常的和一个内存占用很低的。
查看 message 发现 lsp-bridge 应该是运行在项目下
[LSP-Bridge] Start LSP server (gopls) for /home/l/Sync/foo...
[LSP-Bridge] Start LSP server (gopls) for /home/l/Sync/foo complete, enjoy hacking!
但是手动启动 lsp-bridge-mode 的话确实是跳转到定义后需要再次手动为当前 buffer 启动 lsp-bridge-mode 才能用
我完全没有看懂你在怎么用,你就把 lsp-bridge 加到 mode-hook 里面不就行了吗?请看一下 README
说实话我不是很看好用LSP来做代码高亮。这个对lsp的性能的要求应该比补全还高,而且高亮要是一出问题,太容易搞崩客户端了,不像补全,补全出问题至少输入还是能正常的。还是treesitter比较好,静态,快速,而且语法高亮性能至少有lsp 90%,只有少数需要动态的内容不行。而且如果没有lsp,甚至可以把treesitter当ctags来用来补全。treesitter补全的话,不说智能程度,性能应该是和ctags一个级别的,但智能程度秒杀ctags,我估计也能有lsp的五六分智能程度
gopls 起两个是用了 remote 参数,相当于会有一个默认的作服务器,之后起的 go 项目都会起一个代理和这个服务器通信,为了节省内存
也可能只是把 lsp 高亮作为一个补充。
我是通过 M-x lsp-bridge-mode 启动的,对于不同的 go 项目,大部分时候我还是会使用 eglot(因为 lsp-bridge 不支持 tramp),所以我不会把 lsp-bridge 加到 mode-hook 中。
赞,以前还真没了解过这个
想添加imenu的支持,大家有相关资料推荐吗
imenu 不是好的吗? tree-sitter 比较适合弄吧。
Tree-Sitter 代码用例可以参考我写的三个插件:
因为之前使用eglot的时候,eglot是通过lsp来提供imenu-create-index-function
函数的实现才有这个想法的。tree-sitter目前没有使用,可以研究一下。
是的,我发现bridge没这个,所以不太习惯。
我自己不喜欢打开侧边栏,这玩意影响性能不?
因为imenu-create-index-function
函数要求是同步返回数据,我找找有没有异步更新的。
内置就有这个吧?我之前是嫌 lsp 生成的 imenu 太啰嗦,直接关了,用内置的
emacs默认就要这些呀,为啥要用lsp?