显示来自基于单词的建议和自己的完成提供程序的结果

Per*_*rry 5 visual-studio-code vscode-extensions

我正在开发一个 Visual Studio Code 扩展,它使用语言服务器协议提供一个完成列表。我的问题是,实施后,用户已经失去了根据文档内容完成的内容。

我希望补全显示自己的提供商的结果以及 VSCode 基于单词的建议。

非工作示例:

工作示例:

https://github.com/APerricone/harbourCodeExtension/issues/16

我尝试设置isIncompletefalse,但没有任何改善。

Gam*_*a11 5

这是 VSCode 的一项功能,称为“基于单词的建议”(请参阅"editor.wordBasedSuggestions"​​设置)。当所有其他注册的完成提供程序未能返回任何结果时,默认情况下会提供基于单词的建议。

我不知道有什么方法可以将基于单词的建议与您自己的提供商的结果合并。VSCode 开发人员的声明似乎证实了这是不可能的:

即使有完成提供程序返回建议,为什么不包含基于字符串的匹配?

每个提供商根据其注册时使用的选择器获得排名。基于单词的提供者通常得分最低,并且规则是,不会询问排名较低的提供者是否产生了结果。这是为了避免重复和垃圾邮件。

的文档评论registerCompletionItemProvider()仍然相同,所以我认为从那时起这方面没有任何变化。也许您可以为此提出功能请求,但我不确定实现它的可能性有多大。

然而,有一个简单的解决方法:只需自己实施基于单词的建议即可。如果您使用CompletionItemKind.Text,它应该看起来与 VSCode 的内置提供程序相同。我假设为了完成,您无论如何都必须扫描文档内容。作为额外的好处,这可以避免像问题中提到的那样重复。


可能相关的问题:#21611