将内置函数插入VS代码扩展的正确方法

时间:2018-06-08 13:17:52

标签: visual-studio-code vscode-extensions

简介

我目前正在开发基于Bluegiga BLE-112模块的应用程序。该模块可使用BGScript脚本语言进行编程。但是,只有我发现的编辑器,它对BGScript有一些支持,就是Notepad ++,它不适合我的需要。因此,我开始开发自己的Visual Studio Code扩展(扩展市场中有一个不可用)。我已经通过着色器和错误解析,现在我正在创建一个包含代码建议的部分。

主要问题

我想在输入时列出all functions, enumerations and events embedded in the language。我发现代码片段可能是实现这一目标的方法。 JSON格式的代码片段示例如下所示。

"call attclient_indicate_confirm": {
    "prefix": "call attclient_indicate_confirm",
    "body": [
        "call attclient_indicate_confirm(${1:connection})(${2:result})"
    ],
    "description": "Send a acknowledge a received indication from a remote device."
}

call是一个关键字,表示在此行中调用了一个函数。当这样的片段存储在一个合适的JSON文件中时,一切正常 - 我开始输入call,VS Code建议使用代码片段,我可以使用它。

然而,为enumerations创建代码段看起来像是一种过度杀伤,因为枚举没有任何变量 - 它们应该按原样插入。

我的问题是:除了代码片段之外,还有其他方法可以在Visual Studio代码扩展中实现,以便用BGScript语言创建枚举建议吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以通过registerCompletionItemProvider()注册CompletionItemProvider(请参阅languages namespace)。这应该涵盖您的所有用例,因为完成项目也可以通过将insertText设为SnippetString来使用代码段插入。

通常这个(以及其他提供者)通过名为Language Server Protocol的抽象层实现,而不是直接使用VSCode API,这使得它与编辑器无关。