Как предотвратить отображение команд, если расширение не активно? - PullRequest
0 голосов
/ 10 декабря 2018

Я пишу расширение, и я предоставляю собственную команду, объявляем в package.json как:

{
  "contributes": {
    "commands": [
      {
        "command": "myext.doSomething",
        "title": "Do something"
      }
    ]
  }
}

Затем я регистрирую его в расширении, когда оно активируется:

commands.registerCommand("myext.doSomething", () => console.log("hi"))

Это работает, но команда Do Something присутствует в палитре команд, даже если расширение не активно.

Это означает, что если пользователь выбирает команду, когда расширение являетсяне активен, ошибка в строке

команда myext.doSomething не найдена

Есть ли способ запретить отображение пользовательских команд в палитре команд, если толькорасширение было активировано?

1 Ответ

0 голосов
/ 10 декабря 2018

Вместо того, чтобы не показывать вашу команду, когда расширение не активно, вы можете просто добавить ее к activationEvents, как это в вашем package.json.В вашем случае:

{
    "activationEvents": [
        "onCommand:myext.doSomething"
    ]
}

Это запустит экспортированную функцию activate вашего добавочного номера до вызова команды.

Также вам может подойти ключевое слово when.Я ответил на аналогичный вопрос по этой теме здесь .

Редактировать :
Вы можете управлять видимостью команды в палитре команд, дополнительно добавив контекстное меню ( документы ).Тогда вы можете, например, отобразить команду только в том случае, если файл редактора имеет идентификатор определенного языка.
Пример:

{
    "menus": {
        "commandPalette": [
            {
                "command": "myext.doSomething",
                "when": "editorLangId==scala"
            }
        ]
     }
}
...