请教使用 LSP 补全存在多余待选项的问题

Screenshot from 2023-11-14 16-45-25

这里使用 company + eglot + typescript-language-server,补全列表里面很多不是想要的待选项。这个结果应该哪里来过滤?Company,Eglot 还是 typescript-language-server ?

按照这个帖子里说 typescript-language-server 后端给出多余项是正常表现。还有 Eglot 表现是没有多余项,多余项是 Eglot 过滤的?还是前端补全框架 Company ?

可以试试

(defun my-company-capf--candidates (func &rest args)
  "Try default completion styles."
  (let ((completion-styles '(basic partial-completion)))
    (apply func args)))
(advice-add 'company-capf--candidates :around 'my-company-capf--candidates)

1 个赞

你这个不存在多余选项,不属于我所说的现象,而是开启了模糊匹配。

1 个赞

这里哪个是多余项?不是模糊匹配的正常返回结果吗?不喜欢关闭模糊匹配就行了。

1 个赞

是因为eglot 默认用的是flex,不喜欢可以自己定义completion-category-overrides这个变量,改为 basic或者其他。

比如,我是喜欢用 orderless 的是这样设置:

感谢各位大佬的解答