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

我现在没在用lsp-bridge,但这个补丁我看来不会影响到之前的功能

这应该是 lsp-bridge 的 bug, 等我想想。

@braineo Code Action 的多服务器支持已经加上了, Add multi-server support for Code Action. · manateelazycat/lsp-bridge@16c8730 · GitHub

你测试一下看看, 有啥问题再跟我说。

上次给诊断添加多服务器支持的时候把 Code Action 给漏了。

感谢勇哥,这速度

我看了一眼改动好像没有啥影响,但是好像有问题。

启用多服务器之后code action的preview出错(前几行是另一个server的code action options),而且code action不能apply。

在code action设置里删掉一个server就好了。

如果描述太抽象等我晚点搞些log

1 个赞

你给我一个可以重现你问题的 demo 项目吧, 我一会临时合并一下你的 PR 本地测试一下。

这是有eslint

这是只有typescript

这是一个新鲜的nextjs project

// testeslint/src/app/page.tsx:7

export const test = () => {
  var a = 0;
  if (!a) {
    console.log(metadata);
    return 0;
  }
  return 1;
};

我是分割线

我没有看具体实现,vscode好像还能根据打开的地方显示不同的code action

1 个赞

附上配置

(use-package lsp-bridge
  :straight (:host github
             :repo "manateelazycat/lsp-bridge"
             :files ("*" (:exclude ".git")))
  :hook (after-init . global-lsp-bridge-mode)
  :custom
  (lsp-bridge-signature-function 'eldoc-message)
  (acm-markdown-render-font-height 80)
  (lsp-bridge-multi-lang-server-extension-list
    '((("ts" "tsx") . "typescript_eslint"))))
1 个赞

这个错误, 我推送了一个补丁 We need add server-name in `command', otherwise `lsp-bridge-code-acti… · manateelazycat/lsp-bridge@7238601 · GitHub 已经修复了, 你把你那个补丁 rebase 一下。

rebase了,嗯…我本地还是有问题。执行一个code action之后

Debugger entered--Lisp error: (wrong-type-argument window-live-p nil)
  #<subr select-window>(nil nil)
  ad-Advice-select-window(#<subr select-window> nil)
  apply(ad-Advice-select-window #<subr select-window> nil)
  select-window(nil)
  lsp-bridge-code-action-popup-quit()
  lsp-bridge-code-action-popup-select()
  apply(lsp-bridge-code-action-popup-select nil)
  lsp-bridge-call-hierarchy-select()
  funcall-interactively(lsp-bridge-call-hierarchy-select)
  command-execute(lsp-bridge-call-hierarchy-select)

ad-Advice-select-window 这个看着像你的配置引起的呀

有可能,我再排一下吧,诡异的是只用一个server就没问题 :joy:

这个错误我已经修复了。

有新的问题 ERROR:epc:ReturnError([Symbol(‘wrong-type-argument’), Symbol(‘number-or-marker-p’), []]), 还有 code action 的菜单会跳到左上角。

比较诡异。

ESLint 的补丁已经合并, 期间的错误都是因为多个 LSP Server 同时提供 code action 服务的时候, 会导致 Code Action 菜单弹出多次, 造成了 window-live-p 和 number-or-marker-p 错误。

更新最新版, 所有错误都修复了。

感谢大佬的补丁, 把 eslint lsp server 研究透不容易, 很给力! :+1:

1 个赞

啊原来如此,弹得太快了。太好了 code action现在更强了 :mechanical_arm:

1 个赞

对, 执行 code_action 的时候, 每个 LSP Server 跑了一个线程, 当多个线程快速返回 Code Action 数据时, 会造成竞争性错误。

因为 Code Action 的计算一般都比较快, 所以我在 FileAction 里面做了一个计数器, 等所有 LSP Server 的 Code Action 都返回时才弹出 Emacs 菜单, 实际测试, 即使等待几毫秒, Code Action 菜单弹出速度依然非常快。

lsp-bridge 可不可以也支持下 shell?

aweshell 这个包用到 company 实现 auto suggestion, 如果需要正常补全,还得额外装个 company-shell 包。

欢迎发送补丁把, 我现在很少用 aweshell 了, 主要是频繁开发各种 Elisp 插件, 每天都要重启 Emacs .

好的 ~ 紫薯布丁

你好,麻烦问下,在这个 commit 中看到变量 acm-snippet-insert-index 被移除,现在 yasnippet 候选项又排到了最后……应该怎么处理呢?

草稿纸画的项目已经开始了, nova的目标是用类似 lsp-bridge 的技术实现一个多线程远程文件编辑模块。

目前已经可以基于 lsp-bridge 发送的 LSP Diff 序列, 实时编辑远程服务器任意大小的文件, 性能秒杀 tramp.

估计4月份, 可以结合 nova 和 lsp-bridge 这两个项目的功能, 以实现 VSCode 那样实时的远程代码补全功能。

13 个赞