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

doom emacs环境,本地lsp-bridge正常使用,尝试使用open-remote-file得到以下错误 “apply: Opening input file: No such file or directory, /Users/xxxx/.emacs.d/.local/cache/lsp-bridge/remote_file/ip.txt”

1 个赞

才陪客户喝完酒, 脑袋是懵逼的, 手指是清醒的, 看着报错盲修了一个补丁, 你更新看看咋样? 不行就给我 github issue报一个bug吧, 明天清醒肯定修得好。

12 个赞

doomemacs的配置能贴一下吗,我这边lsp-bridge无法配置成功

报一个 bug,使用 lsp-bridge 开发 Verilog-mode 如果使用 verilog-indent-buffer 命令时,lsp-bridge 线程的内存会快速增长,同时也卡住 Emacs。

1 个赞

.doom.d/package.el 可能就在本线程抄的

(package! lsp-bridge
          :recipe (:host github :repo "manateelazycat/lsp-bridge"
                         :files ("*")))
(package! acm :recipe (:host github :repo "manateelazycat/lsp-bridge" :files ("acm")))
;; 如果没有上面这一行,安装 acm-terminal 的时候 doom sync 会报错,提示找不到 acm 这个包,不装 acm-terminal 不$
(package! popon)
(package! acm-terminal :recipe (:host github :repo "twlz0ne/acm-terminal"))

在.doom.d/config.el 我还在使用treesitter

(use-package! lsp-bridge
  :hook
  (python-base-mode . lsp-bridge-mode)
  (c++-mode . lsp-bridge-mode)
  (c++-ts-mode . lsp-bridge-mode)
  (rustic-mode . lsp-bridge-mode)
  (go-mode . lsp-bridge-mode)
  (go-ts-mode . lsp-bridge-mode)
  :init
  (setq acm-enable-citre t)
  :config
  (set-lookup-handlers! 'rustic-mode :async t
                        :definition #'lsp-bridge-find-def
                        :implementations #'lsp-bridge-find-impl
                        :references #'lsp-bridge-find-references)
  (set-lookup-handlers! 'go-mode :async t
                        :definition #'lsp-bridge-find-def
                        :implementations #'lsp-bridge-find-impl
                        :references #'lsp-bridge-find-references)
  (evil-set-initial-state 'lsp-bridge-ref-mode 'insert))


1 个赞

没有关闭company mode的配置吗?

还是报错,不一样的错,因为我现在比如访问是[email protected]:~/test.txt,会说不符合ip:path格式

不知道,没试过哈

你再更新到 https://github.com/manateelazycat/lsp-bridge/commit/9df2ea76121e5478b26f5d67dea3e11a35443f5c 试试吧。

1 个赞

emacs升级到29以后 想往jdtls里加入lombok依赖 但是jdtls启动参数有点问题

请问这个问题怎么排查 lsp-bridge buffer里 comand好像没打印出来 而且.cache目录下也没创建lsp-bridge-jdtls目录

有debug选项的,你看一下readme的底部

python里加了个日志 确实打出来了 command 里只运行了jdtls 没加参数

找到问题了,java-mode里的hook没执行,造成了用户自定义配置没拿到,获取的是langserver里的默认配置,所以无参数启动了jdtls

最后解决办法:因为使用了use-package按需加载,需要在:init(require 'lsp-bridge-jdtls)把hook提前加上去 打开java-mode时候就正常了

我是不是可以这么理解, jdtls可以直接连用,安装了lsp-java,之后 现在又了lsp-bridge,jdtls,需要在电脑上单独启动,然后让lsp-bridge去调用是吧 这样的话,lsp-java是不是就是可以不用安装了

lsp-java不用安装了,只用安装jdtls。不用手动启动jdtls,直接通过lsp-bridge去启动jdtls,然后就可以正常使用了

好的,我可以看一下你的 lsp-bridge 的相关配置吗,配置jdtls的路径啥的和 java-mode-hook 啥的

可以参考下 基本都是手册里的配置 加了个lombok

2 个赞

以前用pyright正常,就是是感觉内存消耗有点大。想尝试把python的lsp从pyright切换到pylsp,失败,想了解下原因。现象如下:

0、git pull更新lsp-bridge到最新版,python端通过pip安装python-lsp-serverpip install python-lsp-server),看python-lsp-server官网,顺带安装了pylint、yapf (pip install pylint yapf),然后在cmd窗口试了一下pylsp -h运行正常。

1、在emacs配置文件中,增加一行

(setq lsp-bridge-python-lsp-server "pylsp")   ; 默认"pyright"

2、emacs打开python文件,报错

[LSP-Bridge] Error: can’t find command ’ruff’ to start LSP server ruff  (xxx.py)

3、搜了下报错,想着可能还要安装lsp的插件,通过pip安装了python-lsp-ruff,它在python的scripts目录下安装了ruff.exe,目录已在PATH环境变量中,再把langserver下ruff中command相应改成"ruff"(原值是"ruff-lsp"),在cmd窗口试了一下ruff -h运行正常。

4、emacs重启,再次打开python文件,lsp-bridge启动了,但启动的lsp又是pyright!!!查看了变量lsp-bridge-python-lsp-server,值是"pylsp"。不理解了。

5、尝试了重启系统,把ruff重命名屏蔽掉,但还是要么报错找不到ruff,要么启动的是pyright,pylsp为啥启动不了?

环境:Windows 10 64位,原生GNU Emacs 28.2,Python 3.10 64位。

lsp-bridge-python-lsp-server 不要改,默认会混合pyright和ruff两个服务器。

我就是想尝试切换到pylsp呢,不要pyright,怎么设置?

如果确实不支持,我还是老老实实换回去继续pyright。

应该是 lsp-bridge-python-multi-lsp-server 的优先级大于 lsp-bridge-python-lsp-server

如果你只想用 pylsp , 可以把 lsp-bridge-python-multi-lsp-server 从 lsp-bridge-multi-lang-server-mode-list 中去掉以后, 再定制 lsp-bridge-python-lsp-server 就好了。

但是强烈推荐你参照 pyright-background-analysis_ruff.json 写一个结合 pylsp 和 ruff 的混合服务器配置, 因为 ruff 诊断的速度要比其他 python lsp server 都要快。