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

已经修复了,感谢反馈。

效率好高 :smile: 已解决。

昨晚写了 corfu 强制刷新函数,我估计现在即使开了 orderless 也会因为 lsp-bridge 快速刷新而没法使用。

刚刚更新到的最新版本,问题已经不存在了, commit 9b47533 解决了这个问题。 :+1:

文件重命名的支持已经做了,可以更新尝试一下。

现在 lsp-bridge 太快了,无时无刻不在弹出补全菜单, 但在某些场景下没有必要弹出补全菜单,比如行首位置、 比如空括号内, 现在主要靠下面两个选项在控制:

(defcustom lsp-bridge-completion-stop-commands '(corfu-complete corfu-insert undo-tree-undo undo-tree-redo)
  "If last command is match this option, stop popup completion ui."
  :type 'cons
  :group 'lsp-bridge)

(defcustom lsp-bridge-hide-completion-characters '(":" ";" "(" ")" "[" "]" "{" "}" "," "\"")
  "If char before match this option, stop popup completion ui."
  :type 'cons
  :group 'lsp-bridge)

欢迎大家一起来补全这两条规则,如果有一些意外情况大家也可以反馈,争取把默认配置弄的舒服点,避免 lsp-bridge 到处弹补全对话框。

7 个赞

大佬威武!花了些时间爬楼。

现在javascript里可以多种语言混写的,例如scss跟graphql可以都在同一个文件里。vscode是支持多开不同的lsp的(eslint, graphql, ts-ls),用来补全不同的代码块

lsp-bridge 理论上是可以支持多个 server ,不同的代码块用不同的服务器,还需要进一步改造才行,慢慢来吧。现在写代码不卡手,已经很幸福啦,哈哈哈哈。

1 个赞

哈哈哈,对的太丝滑了。可以用json配置也非常爽,可以直接抄vscode的参数

设计的时候就想过,千万不要像 lsp-mode 那样用 elisp 配置 LSP 参数,不方便社区成员贡献(抄VSCode配置),哈哈哈哈。

最新的代码下,在写vue时,如果一个字段是可选类型的,那么会导致补全混乱。

lsp-bridge-corfu-bug-2

已经修复了,请更新。

已更新!修复了! :smile:

If my colleague can be this effective in fixing bugs, life would be a lot easier lol.

请问一下对c不在同一个文件夹里对头文件补全的正确姿势是啥呀,用的json文件没有效果

看这个帖子的攻略 在ubuntu 16.04 中成功配置大佬开发的lsp-bridge插件来完成流畅自动完成C\C++代码的功能。 - #8,来自 manateelazycat

添加了 For Xref support 的代码后使用 xref 跳转到定义的时候会提示

xref--show-defs: Wrong type argument: listp, #s(lsp-bridge-deferred-object identity lsp-bridge-deferred-resignal lsp-bridge-deferred-default-cancel nil nil nil)

Backtrace 显示的是

Debugger entered--Lisp error: (wrong-type-argument listp #s(lsp-bridge-deferred-object :callback identity :errorback lsp-bridge-deferred-resignal :cancel lsp-bridge-deferred-default-cancel :next nil :status nil :value nil))
  xref-show-definitions-buffer(#f(compiled-function () #<bytecode -0xe20b3fc1854b535>) ((window . #<window 9 on qwe.java>) (display-action) (auto-jump)))
  xref--show-defs(#f(compiled-function () #<bytecode -0xe20b3fc1854b535>) nil)
  xref--find-definitions(#s(lsp-bridge-deferred-object :callback identity :errorback lsp-bridge-deferred-resignal :cancel lsp-bridge-deferred-default-cancel :next nil :status nil :value nil) nil)
  xref-find-definitions(#s(lsp-bridge-deferred-object :callback identity :errorback lsp-bridge-deferred-resignal :cancel lsp-bridge-deferred-default-cancel :next nil :status nil :value nil))
  funcall-interactively(xref-find-definitions #s(lsp-bridge-deferred-object :callback identity :errorback lsp-bridge-deferred-resignal :cancel lsp-bridge-deferred-default-cancel :next nil :status nil :value nil))
  command-execute(xref-find-definitions)

只有我会这样吗?

好的,谢谢啦

lsp-bridge的xref功能感觉实现的不完备呀,建议直接用内置的命令来跳转和引用。

可以参考我的用法 lazycat-emacs/init-lsp-bridge.el at bd198e81b63c578e4b99acf7ce97e2cc135c5008 · manateelazycat/lazycat-emacs · GitHub