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

volar最新版本中,启动LSP需要移除serverPath,增加tsdk,否则创建LSP SERVER 失败 具体详见 Refactor for Server Initialization Options by johnsoncodehk · Pull Request #1916 · johnsoncodehk/volar · GitHub

今天尝试写clojure代码 但是启动Clojure-lsp报错了

/opt/homebrew/bin/clojure-lsp: line 3: /Users/qibinyang/test/clojure_test/atest/src/atest/@@[email protected]@/bin/java: No such file or directory
/opt/homebrew/bin/clojure-lsp: line 3: exec: /Users/qibinyang/test/clojure_test/atest/src/atest/@@[email protected]@/bin/java: cannot execute: No such file or directory

是我自己没好好看文档,哈哈哈哈,忽略忽略

手速超级快的时候(比如缩进当前行并马上移动到下一行, 这时候某些搜索后端还在计算中),会发生当前光标已经改变了, 但却弹出已经过期的补全菜单。

最新版已经修复,在每次改变 buffer 内容时都记录一下位置, 当后端返回补全列表时, 检查当前光标和最后记录的位置是否一样, 不一样就不弹出补全菜单。

这个bug仅存在于改代码的速度比python线程计算还要快的情况。

3 个赞

我本地使用vls 没有用volar,vue写的不多

期待终端下也能用lsp-bridge

现在可以在终端上用了,在激活Citre后,出现以下错误

Error in post-command-hook (lsp-bridge-monitor-post-command): (void-function citre-capf--get-collection)

你网上搜索一下吧, 我估计是外部插件的函数, 光 citre 还不够。

可以请教 lsp-bridge citre 后端的开发者 @wcq062821

你切换到citre 的 v0.2.1 那个版本就好了, 由于citre的作者最新对citre代码进行了大规模的重构, 我个人基于citre v0.2.1这个版本做了很多的hack, 比如针对HDL环境下根据symbol上下文来对返回的tags进行过滤达到精确跳转的功能, 以及加了显示 signature-help 等功能, 我发现支持v0.3.x版本太折腾了, 所以目前没有时间以及动力去做支持最新版Citre这个事情,如果你需要最新版的特性的话, 可以自己改一下,提个PR, 这样我就可以直接用了 :grinning:

1 个赞

哎呀,能力不够啊,还是先disable这个功能先用着; 谢谢各位大佬整了个这么好用的工具

今天更新了packages 和重新构建了emacs-plus 28不知为何 ,突然就会有这个错误, 在网上找了一圈也没有找到什么导致的原因 大佬们有没有遇到过得的

还有这个问题

都是在typescript mode下出现的问题

--- Recv response emmet-ls (6212): textDocument/completion
Error when processing response 6212
Traceback (most recent call last):
  File "/Users/liyuan/elisp/lsp-bridge/core/handler/__init__.py", line 38, in handle_response
    self.process_response(response)
  File "/Users/liyuan/elisp/lsp-bridge/core/handler/completion.py", line 58, in process_response
    filter = self.prefix if not response.get("isIncomplete") else None
AttributeError: 'list' object has no attribute 'get'

以上内容均可以 有语法补全的内容, 是因为使用multiserver

已经修复了, 应该是 Add some comment and not pick `incomplete-fuzzy-match` option if filt… · manateelazycat/[email protected] · GitHub 这个补丁导致的。

AST的问题解决了, 这个js2-node-type 还是有点问题

这个是你自己的问题呀,你emacs -Q测试一下吧。

每个人反馈问题斗应该自己emacs -Q测试一遍再反馈,不要不测就反馈问题。

提了个PR给官网的文档提及到了这件事情😄

请教一下,我配置好了 lsp-bridge+clangd,然后我修改了 langserver/clangd.json(因为我要改一些设置)。然后我打开我的项目文件,他显示ok(下方有什么 enjoy coding 之类的),但是它不进行补全等工作哇。 emacs28, debian, terminal emacs

. 是还需要做一些配置吗,状态栏:

成功了!!!!

看中文readme底部,看文档。

1 个赞

真好用,比nox快多了。感谢楼主和各位大神的辛苦。

我用的mac emacs,下载于 https://emacsformacosx.com。可惜不支持svg,不能显示好看的图标。

1 个赞

新版本的brew已经无法自定义选项编译emacs了吧?只能cask模式安装,也是从https://emacsformacosx.com/下载的。

$ brew --version Homebrew 3.6.10 Homebrew/homebrew-core (git revision cfdda2c5ef1; last commit 2022-11-13) Homebrew/homebrew-cask (git revision e4db733ee0; last commit 2022-11-13)

yas–all-templates 和 yas–get-snippet-tables 这两个函数的性能消耗还是很大的, 因为 lsp-bridge 是完全异步的, 所以每次 LSP 服务器返回数据的时候都计算 yasnippet 的模板, 一是耗费性能, 二是快速敲击代码过程中这些 yas 模板都是无用的。

今天写了一个补丁, 用户快速输入字符的过程中, 不再查询 yas 模板, 只有当最后一个字符停止敲击后200ms才查询 yas 模板。

通过这个补丁的优化, lsp-bridge 的性能提升了30% (之前测试发现 yas 模板计算性能占 acm 菜单全部计算量的 1/3), 总体体验更加丝滑了。

8 个赞