你能创建一个特定于语言的扩展命令吗?

时间:2016-09-04 00:50:40

标签: visual-studio-code vscode-extensions

在开发VSCode扩展时,是否可以创建仅适用于某些语言的扩展命令?

package.json清单中,您可以按语言激活扩展程序:

"activationEvents": [
    "onLanguage:html"
]

但是,命令调板中的命令仍然存在于所有扩展中。它只是在扩展被激活之前一直无法工作。

我无法弄清楚如何制作命令,只针对特定语言显示...您可以定义如下命令:

"contributes": {
    "commands": [{
        "command": "extension.sayHello",
        "title": "Hello World"
    }]
}

但是此命令可用于命令面板中的所有语言。在我的例子中,我想要创建的特定命令对于HTML语言才有意义。该命令专门在某处查询API,然后将一些HTML插入到当前文件中。显然,将此命令用于pythonruby等其他语言是没有意义的。

是否可以这样做?

1 个答案:

答案 0 :(得分:1)

在VSCode 1.10中添加了对此的支持:https://code.visualstudio.com/updates/v1_10#_context-specific-visibility-of-command-palette-menu-items

package.json

"commands": [{
    "command": "extension.sayHello",
    "title": "Hello World"
}],
"menus": {
    "commandPalette": [{
        "command": "extension.sayHello",
        "when": "editorLangId == html"
    }]
}