Можете ли вы создать команду расширения для конкретного языка?

Можно ли при разработке расширений VSCode создать команду расширения, доступную только для определенных языков?

В своем package.json манифесте вы можете активировать расширение для каждого языка:

"activationEvents": [
    "onLanguage:html"
]

Однако команда по-прежнему присутствует на палитре команд для всех расширений. Это просто не будет работать, пока расширение не будет активировано.

Я не могу понять, как создать команду, она отображается только для определенных языков ... Вы можете определить команду следующим образом:

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

Но эта команда доступна для всех языков в палитре команд. Конкретная команда, которую я хочу создать, действительно имеет смысл в моем примере только для языка HTML. Команда специально запрашивает где-нибудь API, а затем вставляет некоторый HTML в текущий файл. Очевидно, что не имеет смысла использовать эту команду для других языков, таких как python, ruby и т. Д.

Можно ли сделать это?


person Jake Wilson    schedule 04.09.2016    source источник


Ответы (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"
    }]
}
person Matt Bierner    schedule 07.07.2017