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

by the way, lsp-bridge always crashes after restart it, just after rename-this-buffer-and-file

this is the picture when I restart the lsp-bridge, after I rename DropdownMenuItem.vue to MenuItem.vue, it always crashes

哎,说中文不好吗?

1 个赞

eh, input method does not working on KDE wayland
卧槽,这个调用 rename-this-buffer-and-file 过后,lsp-bridge 就一直奔溃,他说找不到这个文件,重启也是一样
but I can copy

文件重命名,lsp-bridge现在还不支持

今天发现一些bug其实不是 lsp-bridge 的,特别是Java补全错乱的bug, 原因是 corfu 没有调用 exit-function :sob:

真想把company和corfu代码都拿掉,现在capf方法太多bug了。

1 个赞

capf 这种架构没法适应 lsp-bridge 这种 push 的机制,整个 capf 的方向都是错的,我准备把 corfu 和 company 这些代码都去掉了,要不没法从根本上解决很多补全兼容性问题。

lsp-bridge只需要 child frame , 不需要 capf。

不是我不想兼容 corfu/company, 而是机制不一样。

4 个赞

I support you, go ahead please

所以咱有时候也很讨厌那种要你提供一个 function 的框架,先对你的函数假设一堆东西,用的人为了突破这些假设又 hack 一堆东西 :rofl:

虽然可以实现可以替换的 UI 是一个优势,但 capf 很多时候又对 UI 有假设,比如 exit-function 那个东西就是给类似「按 tab 补全路径」的场景设计的(不然根本不能理解 exact 那个状态怎么来的),又比如 metadata 里的 cycle-sort-function。设计者以为他设计一个完美的框架就完事了,实际上绝对会被 UI 和它调用的那个函数的需求拽着跑,变成现在这种第三方 UI 很难和原生完全兼容的情况。capf 的情况仍然是比较好的,minibuffer 补全是真正的灾难。

1 个赞

大佬说的对,现在真是前后端bug两边夹击,本来lsp server就是实现不一,capf和corfu本身还有bug,完全没法思考了,特别是今天看了corfu-insert的时候,都不调用capf的exit-function, 那还修个锤子呀[捂脸]

1 个赞

希望尽量支持终端,child frame的话对终端用户太伤了。

是的是的,child frame + TUI 下 fallback 到终端可用的一个方案

尽力吧,lsp-bridge是一个非常消耗维护精力的项目,看看终端有没有大佬愿意帮助了。

大家提那么多需求,我一个人很难满足,没时间。

1 个赞

发布 lsp-bridge 2.0版本。

lsp-bridge 2.0 升级注意:

2.0版本不再支持corfu和company-mode, 因为 lsp-bridge 的目标是提供流畅的代码补全体验,而这依赖 lsp-bridge 独有的 push 消息机制,而Emacs内置的capf架构无法满足 lsp-bridge 的push机制。

所以,从 2.0 版本开始,我们创建了 lsp-bridge-fw.el 、 lsp-bridge-fw-history.el 分别fork自 corfu.el 和 corfu-history.el, 希望基于corfu原有的代码基础之上发展适应与 lsp-bridge push 机制的新型补全框架,以实现更高的补全性能,并彻底解决现有版本各种语言代码补全插入时的诸多bug。

lsp-bridge.el 的开发一直都注重与Emacs现有生态的兼容性,但是最近两周修复了大量关于补全插入的bug, 很难彻底修好,究其原因还是因为capf机制无法满足 lsp-bridge.el 的需要: 当产生新的代码补全时, lsp-bridg 解析LSP消息产生最新的补全列表,corfu有自己的候选词插入/替换逻辑,capf框架也有自己的插入/替换逻辑,再叠加 LSP 的三种候选词渲染优先级(textEdit、insertText和label), 特别是textEdit逻辑(通常来说是提供代码Snippet功能)时,corfu/capf/textEdit 的插入/替换逻辑相互纠缠、冲突,最终导致候选词插入时bug无法彻底修复。

最新的配置项请大家按照README说明来配置,感谢大家的支持!

10 个赞

新版配置可以参考 lazycat-emacs/init-lsp-bridge.el at master · manateelazycat/lazycat-emacs · GitHub

package-list-packages 清单里面没有 tabnine-capf 包。github搜了一次,也没发现

image

这个图标对不齐,有谁知道是什么问题吗?

在tabnine-capf 引用了一个名为 s 的包。在github里面搜了一下,叫做s的git库也有不少。 :worried:犯了选择困难症。不知道用哪个。

Symbol’s function definition is void: lazy-load-set-keys. 定义没了。