你不要完全抄我配置呀,按键定义就按照 Emacs 传统方式定义就好了
更新了,不知道是不是错觉,又流畅了
新版只是 fork 了 corfu 代码,真正手术还没有开始,肯定是错觉哈。
你的 auto-import 的图标为啥那么大?
最新版本,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"
}
]
请看新版的README, 你没有加载 lsp-bridge-ui
搞定了,多谢
晚上花了几个小时读 corfu 的源代码,写了一个手动刷新 corfu 数据的函数:
(defun corfu--manual-complete ()
(pcase (while-no-input ;; Interruptible capf query
(run-hook-wrapped 'completion-at-point-functions #'corfu--capf-wrapper))
(`(,fun ,beg ,end ,table . ,plist)
(let ((completion-in-region-mode-predicate
(lambda () (eq beg (car-safe (funcall fun)))))
(completion-extra-properties plist))
(setq completion-in-region--data
(list (if (markerp beg) beg (copy-marker beg))
(copy-marker end t)
table
(plist-get plist :predicate)))
;; Refresh candidates forcibly!!!
(pcase-let* ((`(,beg ,end ,table ,pred) completion-in-region--data)
(pt (- (point) beg))
(str (buffer-substring-no-properties beg end)))
(corfu--update-candidates str pt table (plist-get plist :predicate)))
(corfu--setup)
(corfu--update)))))
这样,lsp-bridge.el 应该又可以重新支持 corfu和company了。
这个补丁手动刷新 corfu 的候选词数据,同时设置 :company-cache 为 t 让 company-mode 也手动刷新数据( company-mode 待验证)
所以,大家可以继续使用 corfu 或者 company了。
麻烦按照 README 切换会 corfu 吧,不好意思.
我用最新版测试了 python, golang, vue, java, 都没有问题,睡觉了。
别啊,我觉得用法最好统一,另外这个还继续搞吗
现在 corfu 我写了手动刷新数据,corfu 是正常的, company 从 lsp-bridge 开发团队的评估来看,company 现在还没法做手动刷新,所以目前为止大家尽量用 corfu.
没事,如果还有进一步的问题,我可以随时 fork corfu, 昨天已经有经验了,哈哈哈哈。
关于 Java 补全会连同包名一同补全的问题,我发现只要启用了 lsp-bridge-orderless 并且补全被匹配到了包名中的字符,就会有很大的机率会把包名也补全上屏。有一个百分百复现的方法就是使用 corfu-separator 即按 Meta-space 进行分词补全。
最新版本下,使用corfu在补全emmet时会出现这种情况
第一个字符貌似丢了
company 的话可以不用 capf,直接写一个 async 的 company backend。
已经修复了,感谢反馈。
效率好高 已解决。
昨晚写了 corfu 强制刷新函数,我估计现在即使开了 orderless 也会因为 lsp-bridge 快速刷新而没法使用。