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

补一个视频:

10 个赞

补全过程中 Lsp-bridge 经常崩溃

--- Recv message
ERROR:epc:ReturnError([Symbol('wrong-type-argument'), Symbol('char-or-string-p'), []])

--- Recv message
ERROR:epc:ReturnError([Symbol('args-out-of-range'), 0, 1])


还没发现问题在哪,改这两处可以改善但不能根治(所以就不交 pr 了)

另外 . 后面补全结果经常奇奇怪怪,感觉像是 items 还没更新过来

char-or-string-p 那个报错我在 windows 下见过,还挺频繁,好像是在 corfu–post-command 里面报的,但是没查到在哪。

Elisp端报错,导致 hook 挂了, Emacs 发现 hook 函数挂了就会自动从 hook 中移除函数,函数被移除以后,就没法向 lsp server 发送消息,最后就像没返回一样(虽然 python 进程还在)

Kapture 2022-05-10 at 22.35.30

有时候选中候选项后,变得非常奇怪:

  • 在这个补全项后面输入字符没有反应了;
  • 移动光标会直接移动到补全项的头尾
  • 必须要 “删除符号” 两次才能删掉这个补全项

一个bug一个issue哈,详细的重新步骤,新鲜出炉,难免有不健壮的地方。

我感觉像你开了 corfu 的高级功能导致的呀。

是否有必要把 all-the-icons、orderless 之类的配置都合并到 lsp-bridge 仓库里?
我承认这些东西都很好用,我也早就用着了。但是这样感觉这样下去 lsp-bridge 仓库依赖变多(不是所有人都想要这些),其次想要的人自然早就配好了,包括给其他非 lsp 的 capf,lsp-bridge 里再来一遍就显得很冗余了
lsp-bridge 主仓库还是保持他本身核心功能比较好

是否把这些放到 wiki 或者另外弄个 extension 更合适?

1 个赞

先加上体验一下,最好的方法就是多加几个扩展,然后让用户手动 require

我这里和 tramp 一起编辑 go 文件报错,明天复现一下

tramp 就先不要报bug了,明确不支持

这个bug是添加图标和备注的那个补丁引起的, 已经在 Fix args-out-of-range error. · manateelazycat/lsp-bridge@03c3a5a · GitHub 修复了。

原因是因为返回补全列表为空的时候不能进行 put-text-property 操作,要不就会出现 args-out-of-range 这个错误。

我用 lsp-bridge-is-empty-list 来判断诡异的空列表。

icon 和 orderless 代码都分开了,有类似配置的用户不用加载这些扩展。

其实图标是不是可以独立一个包啊,这样会不会更方便用户自由组合?

:joy: my bad.

懒猫有支持 doc 的打算吗?类似这样

打算添加 latex 支持时候发现这个大坑, lsp server 返回的东西可能是五花八门,甚至可能是 markdown/base64的图片

所以要用我的popweb了,专门干这个的,哈哈哈哈

已经这样做了

1 个赞

我说怎么有点怪怪的,执行 corfu-complete 以后还弹出补全窗口。

刚刚加了一个补丁, 用户执行补全以后,如果 lsp-bridge 还实时推送 push 消息过来,先检查一下,如果最后一个命令是 corfu-complete 就不弹出了,如果是其他命令继续弹出补全。

1 个赞

注意这个补丁以后,要用 (lsp-bridge-mode 1) 替换 (lsp-bridge-enable), 感谢 @zerol 大佬的代码重构,代码漂亮多了。

我的建议是,补全参数的文档信息全部 cache 到 lsp-bridge python 端,不要发给Emacs去解析,一来各种类型文档格式混杂,二来发给Emacs解析只会拖慢Emacs的补全速度。

这样来实现:

  1. 文档首先缓存到 python 端字典中
  2. corfu弹出菜单按一个按键去像 lsp-bridge 请求查看某个API的文档
  3. lsp-bridge接到API查看请求后,利用 popweb 这种专门干富文本渲染的插件来干预览API文档