【问题标题】:Show results from both word based suggestions and own completion provider显示基于单词的建议和自己的完成提供程序的结果
【发布时间】:2019-03-18 10:15:59
【问题描述】:

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

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

非工作示例:

工作示例:

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

我尝试将isIncomplete 设置为false,但没有任何改进。

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

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

    我不知道有什么方法可以将基于单词的建议合并与您自己的提供商的结果。 This statement by a VSCode dev 似乎证实这是不可能的:

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

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

    registerCompletionItemProvider() 的文档注释还是一样的,所以我认为从那以后在这方面没有任何改变。也许您可以为此打开一个功能请求,但我不确定它实现的可能性有多大。

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


    可能相关问题:#21611

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多