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

我有个疑问,为什么你跳转到标准库后 lsp-bridge-mode 就没了,lsp-bridge-mode 不是可以在受支持的文件类型下自动启用的嘛,然后在标准库里也可以接着跳转定义啊

可以 work around 一下,我的解决方法如下


  (require 'xref)
  (defun find-definitions-with-lsp-bridge ()
    (interactive)
    (if lsp-bridge-mode (lsp-bridge-find-def)
      (call-interactively 'xref-find-definitions)))
  (add-to-list 'xref-prompt-for-identifier #'find-definitions-with-lsp-bridge 'append)

  (global-set-key (kbd "M-.") #'find-definitions-with-lsp-bridge)

  (advice-add #'lsp-bridge--jump-to-def :around (lambda (&rest args) (xref--push-markers) (apply args)))

把persistent-scratch这个包停用了就好了

并不是,我不是要在 lsp-bridge 没开启的时候使用别的跳转方式

不在之前的 project 下面没开启也很正常啊

ps: 我不是用 global-lsp-bridge-mode

那你给你需要的 mode hook (按你的情况就是你那个标准库) 手动启用 lsp-bridge-mode 不就行了,eglot 本质上也是在相应 mode hook 下启动的而已,只是你没有感知而已,做的工作是一样的。如果你不想用 global-lsp-bridge-mode,那用法也应该是加 hook,而不是手动启用

该装的都装了

好的,我试试

停了persistent-scratch这个包好像也不是一个很好的解决办法,这个问题好像是在这个包写入文件的时候调用了lsp-bridge服务导致找不到当前服务导致

抱歉我就是手动启动的,而且 lsp-bridge 不支持 tramp,如果我编辑远程的时候想用 lsp 只能用 eglot

今天发现一个小问题。疑似 lsp-bridge 对于 mode-line 支持有乱码?
因为之前一直使用 doom-modeline,没有注意这个乱码。今天在另一个系统上使用 simple-modeline后,开启lsp-bridge 出现了乱码,而关闭 lsp-bridge 后乱码消失。

emacs -Q

后,加载 lsp-bridge 最简配置,也会在 mode-line 出现乱码。
以上遇到的问题,是在更新到最新 lsp-bridge 后,分别使用 emacs 27.2、28.1、29.0 时,都会存在。



不知道大家是否也遇到了相同的状况?

这不是乱码。。。这是正体字的“桥”啊。。。minor mode的 lighter 就是它。。。 工程全局搜 :lighter 你就懂了 :joy_cat:

4 个赞

好的!谢谢!请原谅我的无知! :hugs:

emacs29.0.50,win10, 使用lsp-bridge时,感觉补全有时正确有时不完整,看lsp-bridge的log,发现有如下信息:

Exception in thread Thread-3:
Traceback (most recent call last):
  File "c:\Python\Python39\lib\threading.py", line 980, in _bootstrap_inner
    self.run()
  File "c:\Python\Python39\lib\threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\lsp_bridge.py", line 105, in event_dispatcher
    getattr(self, func_name)(*func_args)
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\lsp_bridge.py", line 227, in _do
    open_file_success = self._open_file(filepath)  # _do is called inside event_loop, so we can block here.
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\lsp_bridge.py", line 199, in _open_file
    self.create_file_action(filepath, lang_server_info, lsp_server)
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\lsp_bridge.py", line 148, in create_file_action
    action = FileAction(filepath, lang_server_info, lsp_server, lsp_bridge=self, **kwargs)
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\core\fileaction.py", line 69, in __init__
    self.lsp_server.attach(self)
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\core\lspserver.py", line 227, in attach
    self.send_initialize_request()
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\core\lspserver.py", line 252, in send_initialize_request
    "rootUri": path_to_uri(self.project_path),
  File "d:\Users\home\.emacs.d\lisp\lsp-bridge-master\core\utils.py", line 165, in path_to_uri
    raise ValueError("relative path can't be expressed as a file URI")
ValueError: relative path can't be expressed as a file URI
I[15:12:19.007] (built by Brecht Sanders) clangd version 14.0.4
I[15:12:19.008] Features: windows
I[15:12:19.008] PID: 29488
I[15:12:19.008] Working directory: d:/Users/home
I[15:12:19.008] argv[0]: D:\mingw64\bin\clangd.EXE
I[15:12:19.008] argv[1]: --all-scopes-completion
I[15:12:19.008] argv[2]: --clang-tidy
I[15:12:19.008] argv[3]: --enable-config
I[15:12:19.008] argv[4]: --header-insertion-decorators=0
I[15:12:19.014] Starting LSP over stdin/stdout

像是在说有个相对路径不能识别? 能帮忙看看这个是啥问题吗?

另:用eglot+company,就没有这个问题了;

252行那行打印一下 project_path 是啥?

failed to provide feature ‘s’
这是什么错误?

self.project_path 是 /cygdrive/e/hello/master

这个咋是一个cygwin的格式呢?这个path是通过啥取的啊?

可能你 $PATH 里面是 cygwin 的 git, 要不然删了用个 git for windows 的。

代码格式化已经完成 https://github.com/manateelazycat/lsp-bridge/commit/156f1ce8af82d5a26fc516fb3ffb9d75d9a3c2f1

2 个赞

你的这个路径太奇怪了, 感觉环境有问题, 看看 lsp-bridge–get-lang-server-func 这个函数返回啥?