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

你看 lsp-bridge buffer 啥内容

我编辑go文件时它是直接没有buffer的,但是当我编辑其他类型的时候有。

比如说java:

你go文件是go-mode吗?你没安装go-mode的插件吧

1 个赞

这是我的配置,go-mode确实没安装。那我先去装一个go-mode试试。

(add-to-list 'load-path "/home/fzdwx/.emacs.d/plugins/markdown-mode")
(add-to-list 'load-path "/home/fzdwx/.emacs.d/plugins/yasnippet")
(add-to-list 'load-path "/home/fzdwx/.emacs.d/plugins/posframe")
(add-to-list 'load-path "/home/fzdwx/.emacs.d/plugins/lsp-bridge")

(require 'posframe)
(require 'yasnippet)
(require 'lsp-bridge) 

(yas-global-mode 1)
(global-lsp-bridge-mode)
(setq lsp-bridge-enable-log t)

好的。我现在需要使用多个server的场景还是用lsp-mode,其他的都切换成bridge了。

安装了GitHub - dominikh/go-mode.el: Emacs mode for the Go programming language 就好了,感谢! :smile:

再退回 lsp-mode 感觉太慢了

我也是写 CSS ,多个 server 一起开比较理想,不能开也还好

多场景的测试代码和期望的语言服务器发一下吧,我有空看看,最近在忙家里的事情,确实太累了,就晚上有空摸会电脑。

晚上研究了一下, 技术上 lsp-bridge 是可以一个文件支持多个 server, 但是会带来很多额外的问题, 比如定义跳转、帮助文档会存在多个 server 返回的情况。

目前还没想好怎么做, 先暂时不动。

如果额外的 LSP 服务器只是提供额外的补全, 倒是实现不麻烦, 如果对查找定义、 查找文档、 重命名、 Code Action 都需要支持多个 LSP 服务器, 就非常麻烦, 而且目测会很多 bug

如何处理没有 lsp 的 mode 下的补全,比如 systemd-mode 提供了 systemd units 的部分关键字补全?

如果对这些 mode 开启 corfu 或者 company,如何防止它们在使用 lsp 的 mode 下和 acm 冲突?

可以给acm编写systemd的补全后端,就像acm提供英语补全一样,创建一个systemd关键字的内存词典就好了。

1 个赞

是的,emmet-ls仅仅是为了扩展补全,我觉得你可以支持 (Major-mode '(server1 server2 …))类似的,所有定义,跳转,文档功能都仅限于server1。毕竟多server模式我也只见过css+emmet,html+emmet,需求场景少并不复杂。

没这么简单, emmet-ls 是为了补全, 有些lsp server, 比如 eslient 是为了诊断。

多个服务器的需求还需要进一步讨论, 想清楚再动手。

eslint server我还没用过。。我一直使用flycheck配置的。我去看了下,好像功能还挺多的,autofix,document之类,那这就麻烦了感觉。

写了下关于虚拟环境的配置,有需要的可以看一下

2 个赞

赞啊,字数补丁

1 个赞

卧槽,谢谢大佬

这个acm能用于minibuffer补全吗?

理论上可以,但是没有必要