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

标签 visual-studio-code vscode-extensions

我正在开发一个 Visual Studio Code 扩展,它使用语言服务器协议(protocol)提供一个完成列表。我的问题是实现后,用户丢失了基于文档内容的完成。

我希望完成显示我自己的提供者的结果以及 VSCode 的基于单词的建议。

非工作示例:



工作示例:



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

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

最佳答案

这是一个称为“基于单词的建议”的 VSCode 功能(参见 "editor.wordBasedSuggestions" 设置)。每当所有其他注册的完成提供程序未能返回任何结果时,默认情况下都会提供基于单词的建议。
我不知道有任何方法可以将基于单词的建议与您自己的提供商的结果合并。 This statement by a VSCode dev似乎证实这是不可能的:

Why not include string based matching even when there is a completion provider returning suggestions?


每个提供者都会获得一个 rank取决于它在注册时使用的选择器。基于单词的提供者通常得分最低,rule是没有询问排名较低的提供商是否产生了结果。那是为了避免重复和垃圾邮件。
registerCompletionItemProvider()的文档注释仍然是一样的,所以我认为从那以后在这方面没有任何改变。也许您可以为此打开一个功能请求,但我不确定实现它的可能性有多大。
但是,有一个简单的解决方法:只需自己实现基于单词的建议。如果您使用 CompletionItemKind.Text ,它应该看起来与 VSCode 的内置提供程序相同。我假设要完成,您无论如何都必须扫描文档内容。作为额外的好处,这可以避免问题中提到的重复。

可能相关问题:#21611

关于visual-studio-code - 显示基于单词的建议和自己的完成提供程序的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55219025/

相关文章:

docker - Docker VSCode扩展-无法连接到Docker

bash - VSCode : How to open two terminals on startup with different directories

visual-studio-code - 用于运行 VSCode 扩展的自定义节点版本

visual-studio-code - 在 vscode 扩展中订阅命令的目的?

visual-studio-code - VSCode 扩展 createTextEditorDecorationType 忽略空格

visual-studio-code - 在 VS Code 扩展中有发布预览功能的标准方法吗?

performance - 限制 3rd 方扩展以提高启动性能(actionEvents)

visual-studio-code - Visual Studio Code : How to add checkbox in view container

javascript - VS代码,编写绘制图表的扩展

c++ - 找不到make,我该如何解决这个问题?