Условный вклад для `activitybar` в `viewsContainers`

#visual-studio-code #vscode-extensions

#visual-studio-code #vscode-расширения

Вопрос:

Я хочу условно создать вклад в activitybar раздел для viewContainer для моего расширения code review.

Я думал, что это может быть достигнуто путем добавления этого раздела в package.json файл:

 "viewsContainers": {
      "activitybar": [
        {
          "id": "code-review",
          "title": "Code Review",
          "icon": "images/icon-sidebar.svg",
          "when": "codeReview:displayCodeReviewExplorer"
        }
      ]
    },
  

Но, к сожалению, это, похоже, не работает, поскольку представление отображается всегда, а when часть, похоже, не выполняется.

Вот коммит, который я создал:

https://github.com/d-koppenhagen/vscode-code-review/commit/aa13034533bc5dd2a5a8bb2743db60505cd3bd52

Таким образом, общая цель состоит в том, чтобы просто активировать представление при наличии определенного файла. В противном случае вид и, конечно, кнопка activitybar не должны быть видны.

Есть какие-либо подсказки / предложения / решение? PR также очень приветствуется 🙂 Заранее спасибо! 🙏

Комментарии:

1. что, если вы жестко закодируете значения true / false для setContext вызова, работает ли when тест для ViewContainers

2. к сожалению, тот же результат. Я тоже пытался "when": "false" безуспешно

Ответ №1:

Хорошо, я исправил это с помощью этого коммита: https://github.com/d-koppenhagen/vscode-code-review/commit/830a7b922ec0e89fdaa75b4966a5348ffe84388d

when Предложение должно быть частью views раздела вместо viewsContainers -> activityBar :

 "viewsContainers": {
      "activitybar": [
        {
          "id": "code-review",
          "title": "Code Review",
          "icon": "images/icon-sidebar.svg"
        }
      ]
    },
    "views": {
      "code-review": [
        {
          "id": "code-review.list",
          "name": "Comment Explorer",
          "when": "codeReview:displayCodeReviewExplorer"
        }
      ]
    },