首页 > 解决方案 > 将内置函数插入 VS Code 扩展的正确方法

问题描述

介绍

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

主要问题

我希望在键入时将所有函数、枚举和事件嵌入到列出的语言中。我发现代码片段可能是实现这一目标的方式。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 建议一个代码片段,我可以使用它。

但是,为枚举创建代码片段看起来有点过头了,因为枚举没有任何变量——它们应该按原样插入。

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

标签: visual-studio-codevscode-extensions

解决方案


是的,您可以通过(请参阅命名空间)注册CompletionItemProvider。这应该涵盖您的所有用例,因为完成项也可以通过将其a来使用片段插入。registerCompletionItemProvider()languagesinsertTextSnippetString

通常这(与其他提供程序一起)是通过称为语言服务器协议的抽象层实现的,而不是直接使用 VSCode API,这使得它独立于编辑器。


推荐阅读