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

今天更新后,只要输入非英文,比如中文,就会提示错误

Error in post-command-hook (lsp-bridge-monitor-post-command): 
(wrong-type-argument number-or-marker-p nil)

不知大家是否也遇到这样的问题。

当回滚到 adec95f 就一切正常,没有错误提示,也能正常输入中文。

这个应该是我的提交引入的,抱歉 :sweat:,我先看看 报错之后就无法输入中文了吗?

1 个赞

是的,报错后无法输入中文,其它补全也实效,重启lsp-bridge也无效!

可以回滚你那个补丁,中文过滤在你的后端过滤,不要全局过滤。

应该就不会影响其他补全后端了。

ess进程是啥?另外一个lsp server?

没法完全在后端处理好这个问题,因为 acm 的边框起点用的是

(setq acm-frame-popup-point (or (car bounds) (point)))

而 bounds 原本是直接用 (bounds-of-thing-at-point 'symbol) 获得的,这种情况如果 输入是 “我们使用ema”,得到的边界的起点是 “我”,终点是 “a”, 导致无法对 ema弹出补全候选词 “emacs”, 因为整个前缀是 “我们使用ema” 而不是 “ema”,这对 Search word 乃至所有后端都是失效的

主要问题是因为 bounds-of-thing-at-point 不会对中英文自动分开处理 我在 lsp-bridge -- 速度最快的语法补全插件 - #2103,来自 twiddling 里用 string-match 去找第一个 ascii 字符的位置,然后加上 offset 把中文排除,但如果全是中文,返回的 offset 就是 nil ,而 nil 还要继续参与加法导致报错。

我改成从后往前搜 ascii 子串应该就可以

1 个赞

修改 acm-update-candidates 吧,我自己 hack 了一个和你的想法差不多的 :rofl: demo

2 个赞

是R的REPL

你们玩的太高端了,把我整不会了,发补丁吧

1 个赞

@zwwang 确实如 @hilde 所说, acm 现在融合各个后端的函数就是 acm-update-candidates

高级用户可以自己编写这个函数, 但是要注意随时检查最新版的实现以方便自己 fork

2 个赞

现在已经养成了习惯,更新后,第一件事就是先看 acm-update-candidates 有没有变动。:grin:发现这个函数~目前变动挺大的。 @manateelazycat 大佬真是精益求精 :+1:t2:

大佬,我刚更新了一下代码,打开php文件提示这个:

大佬,这个位置被占用了。我想弄个类似现在的查找代码引用的函数,但是又不想破坏现在的这个lsp-bridge-find-references。现在的这个用来重构代码非常好用,但是我又想弄个别的来查看代码。

一样,我这里 gopls

刚看了下,好像是可以自己定义rpc的名字的?

pyright 一样

我最后一个补丁写的有问题,我已经回滚了,不好意思。

谢谢,收到!

不好意思,没看懂你说的啥意思。

没事没事,忽略就好了,已经解决了 :rofl: