我正在开发一个Visual Studio Code扩展,它使用语言服务器协议来提供完成列表。我的问题是,实施它之后,用户会丢失基于文档内容的完成。
我想完成以显示两者我自己的提供者的结果以及VSCode基于单词的建议。
非工作示例:
工作示例:
(https://github.com/APerricone/harbourCodeExtension/issues/16)
我尝试将isIncomplete
设置为false
,但没有任何改善。
答案 0 :(得分:1)
这是VSCode功能,称为“基于单词的建议”(请参见"editor.wordBasedSuggestions"
设置)。默认情况下,只要所有其他注册的完成提供者均未返回任何结果,就会提供基于单词的建议。
我不知道将基于单词的建议与您自己的提供商的结果进行合并的任何方式。 This statement by a VSCode dev似乎确认这是不可能的:
即使有完成提供者返回建议,为什么也不包括基于字符串的匹配?
每个提供程序都会根据注册时使用的选择器获得rank。基于单词的提供者通常得分最低,rule则是不询问排名较低的提供者是否产生了结果。那是为了避免重复和垃圾邮件。
registerCompletionItemProvider()
的文档注释仍然相同,因此从那以后我认为这方面没有任何改变。也许您可以为此打开功能请求,但我不确定实现该功能的可能性有多大。
但是,有一个简单的解决方法:自己实施基于单词的建议。如果使用CompletionItemKind.Text
,则其外观应与VSCode的内置提供程序相同。我假设要提供完成信息,无论如何您已经必须扫描文档内容。作为一项额外的好处,这可以避免像问题中提到的重复。