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

Windows 中因为路径问题,可能找不到词典,会一直弹出(已经安装好了PyStarDict),

[LSP-Bridge] You need install PyStarDict with command ’pip3 install PyStarDict’ to use English Helper feature.

你用 pip3 安装了 pystardict 这个库吗?

升级并安装了 PyStarDict 后,经测试~
在 linux 一切正常



在windows 7 上,python 3.8 即使安装了 PyStarDict



也会提示未安装

麻烦升级再测试一下 windows, 出错以后看 *lsp-bridge* 报啥错?

大佬,升级后,报错为 UnicodeDecodeError

Traceback (most recent call last):
  File "d:\App\lsp-bridge\core\search_sdcv_words.py", line 63, in build_words
    start_dictionary = Dictionary(dictionary_path)
  File "c:\Python38\lib\site-packages\pystardict.py", line 438, in __init__
    self.ifo = _StarDictIfo(dict_prefix=filename_prefix, container=self)
  File "c:\Python38\lib\site-packages\pystardict.py", line 58, in __init__
    _file.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xb8 in position 109: illegal multibyte sequence

这是因为 windows 默认就是 gbk, pystartdict 这个库没有强制 utf-8 来读取文件

再更新看看吧, 我自己 fork 了 pystardict

1 个赞

在 Windows 下已经可以使用了。 :+1: :+1: :+1: :+1: :+1:

更新后,可以了!
大佬辛苦啦!!! :+1: :+1: :+1:

性能怎么样?你要的那些韩语的词典应该也换个词典文件应该就可以用了。

在 Windows 上使用,感觉非常丝滑流畅! 分别使用了几分钟 acm-backend-search-sdcv-words 和 acm-backend-english,流畅度差异虽然很小,但是还是能明显感觉到 acm-backend-search-sdcv-words 的反应更迅速,几乎无丝毫卡顿。其实之前的 acm-backend-english 已经是很流畅了,偶尔在输入新词时,特别是韩文、中文补全时,会卡顿那么一闪的瞬间。而 acm-backend-search-sdcv-words 给我的感觉是~
我还没想好下一个按键要不要按下去,补全弹窗就出现了!这还是在老旧机器的 Windows 7 上!个人感觉这个补丁又让 lsp-bridge 的语言补全性能有了全新的提升!!!
我也打算着手试试将自己的韩语词典换成对应格式的词典!!!

大佬不断推陈出新!真的很佩服! :+1:这给用户带来了一次又一次更好的体验! :+1:

7 个赞

之前只在编程模式下使用lsp-bridge,现在已经将org-mode等文本模式也换成acm了,确实acm的补全体验太丝滑了!有想法要不要搞一个类似company-capf的对应的acm-capf,当然大部分时候capf其实已经完全没有必要了,因为acm自带的后端都很好用,但是有些特殊的模式,capf还是必须的(比如mu4e之类的模式),如果搞了一个acm-capf的话,这样corfu都不需要装了,可以只用acm (以及acm-terminal)作为补全前端了。看了下company-capf的代码,只有200-300行,感觉实现一个类似的acm-capf应该也不会太复杂

差啥后端就补啥acm后端吧,capf我觉得本身就是设计者考虑太简单了,capf最主要的问题是它是基于候选词的label作为key,每渲染一次都要用这个label去所有候选列表去遍历一遍找其他信息,如果候选列表太长就会导致补全菜单卡。

acm之所以创造出来就是不想因为capf的错误设计而把补全菜单代码逻辑弄的乱七八糟,最重要的是不要因为将就capf把性能拉下去。

具体细节我已经写了文章 https://manateelazycat.github.io/emacs/2022/06/26/why-lsp-bridge-not-use-capf.html 就不再复述了。

反馈一个问题
刚刚尝试了更换词典。
如果词典关键词是英文,一切正常(比如这本 《牛津高阶英汉双解词典》),只要输入一个字符就出现补全窗口。



但如果词典的关键字是非英文的,比如韩汉、汉韩词典,就不会出现补全窗口。



同时,*lsp-bridge* 会提示警告信息

/home/blove/myLinux/myApp/lsp-bridge/core/pystardict.py:601: UserWarning: Iter dict items with in_memory=False may cause serious performance problem
  warnings.warn(
/home/blove/myLinux/myApp/lsp-bridge/core/pystardict.py:200: UserWarning: Iter dict items with in_memory=False may cause serious performance problem
  warnings.warn(

因为是测试,怕自己制作词典格式不正确,所使用的字典都是从 http://download.huzheng.org/ 网站下载的。



测试平台:Linux, emacs-28.2, emacs-29.0
中文、韩文输入法:fcitx5 + Rime

completion-at-point-functions 还有救吗 nvim 的coq好快啊

capf有救,我就不会弄acm了

好了, 更新吧, 现在支持中文和韩文了。

2 个赞

大佬,之前说的那个手速过快的bug 修过以后有了一个新的问题。候选默认选择项有概率不是第一个。

1 个赞

更新后,已经一切OK啦! :blush:
linux 上一切正常 !windows上一切正常!

是的, 这不是 bug, 而是上次选择的候选词列表再下次更新后会重新调整顺序, 因为 LSP Server 会根据输入习惯调整候选词排序优先级。

1 个赞