company backend的问题

我的company-backends如下图一,并且我开启了citre-mode(会自动注册company-capf);结果我发现我在补全时候除了company-capf,其他backends都不见了。。。

我意思是所有补全只来自company-capf

这个现象是正常的,当有一个 backend 返回结果后,在它后面的 backend 就不会被调用了。

如果想让 2 个 backend 同时起作用,可以使用 :with 将它们组合起来,具体可以看一下 company-backends 的 docstring.

一个简单的例子:

(setq company-backends '((company-capf :with company-tempo)
                         company-files
                         (company-dabbrev-code company-keywords)
                         company-dabbrev
                         ;; HACK: prevent `lsp-mode' to add `company-capf' back.
                         company-capf)))

表示优先使用 company-capfcompany-tempo 的组合,然后再是剩下的。

当然也可以使用 company-try-hard 来取得所有 backends 的结果(不过我没用过)。

2 个赞

我先尝试一下,谢谢了