kinono
639
所以咱有时候也很讨厌那种要你提供一个 function 的框架,先对你的函数假设一堆东西,用的人为了突破这些假设又 hack 一堆东西
虽然可以实现可以替换的 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的话对终端用户太伤了。
xqliu
642
是的是的,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 个赞
package-list-packages 清单里面没有 tabnine-capf 包。github搜了一次,也没发现
在tabnine-capf 引用了一个名为 s 的包。在github里面搜了一下,叫做s的git库也有不少。 犯了选择困难症。不知道用哪个。
Symbol’s function definition is void: lazy-load-set-keys. 定义没了。
你不要完全抄我配置呀,按键定义就按照 Emacs 传统方式定义就好了
1 个赞
新版只是 fork 了 corfu 代码,真正手术还没有开始,肯定是错觉哈。
1 个赞
最新版本,C++ clangd输入的时候碰到以下错误
Debugger entered--Lisp error: (void-function lsp-bridge-ui--auto-tick)
(lsp-bridge-ui--auto-tick)
(setq lsp-bridge-last-change-tick (lsp-bridge-ui--auto-tick))
lsp-bridge-monitor-after-change(316 317 0)
self-insert-command(1 105)
funcall-interactively(self-insert-command 1 105)
call-interactively(self-insert-command nil nil)
command-execute(self-insert-command)
重启没用,还是出先一样的错误
setq: Symbol’s function definition is void: lsp-bridge-ui–auto-tick
$ cat compile_commands.json
[
{
"directory": "/Users/donald/acm_note/code/cmake/demo01/cmake-build-debug",
"command": "/usr/local/bin/g++-11 -isystem /usr/local/Cellar/gcc/11.1.0/include/c++/11.1.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -mmacosx-version-min=11.6 -o CMakeFiles/main.dir/main.cpp.o -c /Users/donald/acm_note/code/cmake/demo01/main.cpp",
"file": "/Users/donald/acm_note/code/cmake/demo01/main.cpp"
}
]