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

Can you create a language specific extension command?

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

在您的 package.json 清单中,您可以激活每种语言的扩展程序:

"activationEvents": [
    "onLanguage:html"
]

但是,所有扩展的命令面板中仍然有一个命令。在扩展程序被激活之前它不会工作。

我不知道如何制作命令,只针对特定语言出现...您可以这样定义命令:

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

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

可以这样做吗?

在 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"
    }]
}