company的fuzzy-matching现在怎么样了

从jetbrains家跳到emacs,我现在唯一想念的东西就是:输入exln,补全候选列表能出extremelyLongName :cry:

记得以前讨论过但是找不到帖子了,就重新发一个。搜了一下,company的issue最后有人基于什么flx搞了个company-flx,然后大家说不宜放在company里面,因为依赖flx,可以另外发个包,他就发了个。遗憾是暂时只支持company-capf后端,company-dabbrev这样重要的后端还没支持。

我试了一下,后端换成只有company-capf之后在web-mode下根本什么都出不来。。capf=completion-at-point-function,不大懂。

输入一下company-diag看看你当前cursor下面使用的啥backend

推一個自己寫的插件 company-fuzzy. 他什麼backends 都支持, 也支持很多個不同的模糊演算 (flx, flex, fuz, liquidmetal, etc), 可以試試看~

可以单独开帖详细介绍一下

你开发了很多 emacs 的 package,真的可以发一条专门介绍的帖子。我去你的 github,佩服你的想法、精力和执行力,真的值得整理一下自己的工作,发出来让大家了解了解。

1 个赞

謝謝! 我自己也覺得花太多時間去"做". 但都沒有花太多時間去解釋. 有機會一定整理起來. :sweat_smile:

加了fuzzy matching(flex)后感觉卡卡的,这几个算法哪个性能更好一点啊?

我自己是用 flx-rs, 在 windows 下可以得到16倍的提速, Linux下測試是10倍 (比起 flx), 不過如果 flx 夠用, 就用 flx 就行了. 另一個是 fuz, 或用我預編譯好的 fuz-bin.

对,感觉相当卡。只有寄希望于c或者rust了

我很好奇,company-fuzz 发布在melpa,但是 flx-rs 又发布到其他地方,安装和使用很不方便啊。这是为何?

沒有特別原因呢. 要發布也行, 只是一直沒有行動 :sweat_smile:

flx确实感觉比flex快很多,谢谢;flx-rs是不是依赖flx包的,还是可以单独用? 另外我遇到一个问题;我原先也在使用company-english-helper这个包,用来辅助英文查词。但这个因为不是时常需要,所以我通过修改company-backends这个变量来开启或关闭english-helper的补全;在用了company-fuzzy后,我发现company-backends被改成了company-fuzzy-all-other-backends这个变量,然后再修改company-backends这个变量好像就不正常了,似乎backends可以增加,但是删不掉。我应该怎么做才能继续完成动态修改backends的目的?

谢谢;

flx-rs是獨立的包, 可以單獨使用.

company-fuzzy-all-other-backends 必須是唯一的後端, 因為其他都被抓去管理了. 動態加入可以參考這裡.

基本上所有 backends 都是交給插件自己去搞定, 大多使用者都不需要特別去管理.