补一个视频:
补全过程中 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 进程还在)
有时候选中候选项后,变得非常奇怪:
- 在这个补全项后面输入字符没有反应了;
- 移动光标会直接移动到补全项的头尾
- 必须要 “删除符号” 两次才能删掉这个补全项
一个bug一个issue哈,详细的重新步骤,新鲜出炉,难免有不健壮的地方。
我感觉像你开了 corfu 的高级功能导致的呀。
是否有必要把 all-the-icons、orderless 之类的配置都合并到 lsp-bridge 仓库里?
我承认这些东西都很好用,我也早就用着了。但是这样感觉这样下去 lsp-bridge 仓库依赖变多(不是所有人都想要这些),其次想要的人自然早就配好了,包括给其他非 lsp 的 capf,lsp-bridge 里再来一遍就显得很冗余了
lsp-bridge 主仓库还是保持他本身核心功能比较好
是否把这些放到 wiki 或者另外弄个 extension 更合适?
先加上体验一下,最好的方法就是多加几个扩展,然后让用户手动 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 代码都分开了,有类似配置的用户不用加载这些扩展。
其实图标是不是可以独立一个包啊,这样会不会更方便用户自由组合?
所以要用我的popweb了,专门干这个的,哈哈哈哈
已经这样做了
我说怎么有点怪怪的,执行 corfu-complete 以后还弹出补全窗口。
刚刚加了一个补丁, 用户执行补全以后,如果 lsp-bridge 还实时推送 push 消息过来,先检查一下,如果最后一个命令是 corfu-complete 就不弹出了,如果是其他命令继续弹出补全。
我的建议是,补全参数的文档信息全部 cache 到 lsp-bridge python 端,不要发给Emacs去解析,一来各种类型文档格式混杂,二来发给Emacs解析只会拖慢Emacs的补全速度。
这样来实现:
- 文档首先缓存到 python 端字典中
- corfu弹出菜单按一个按键去像 lsp-bridge 请求查看某个API的文档
- lsp-bridge接到API查看请求后,利用 popweb 这种专门干富文本渲染的插件来干预览API文档