Можно ли написать расширение VS Code, которое изменяет tasks.json и launch.json?

Я хотел бы создать собственное расширение, которое предоставляло бы предопределенную конфигурацию для отладчика (launch.json) и предопределенный набор задач (tasks.json).

Прямо сейчас у меня есть код vs, настроенный в этих двух файлах, но во многих местах есть много жестких кодов, которые будут различаться в разных проектах. Поэтому в идеале я хотел бы иметь плагин, который, например, читает один файл конфигурации и применяет все это к «tasks.json» и «launch.json».

Интересно, возможно ли это вообще с API расширений кода vs.


person mar3kk    schedule 13.01.2017    source источник


Ответы (2)


Я думаю, вы можете сделать это с переменными, определенными в settings.json. Вы можете определить свои собственные настройки в settings.json (либо настройки пользователя, либо настройки рабочей области):

{
  "editor.formatOnSave": false,  // normal settings defined by the editor and plugins
  "foo.bar": "baz" // custom setting
}

Затем вы можете ссылаться на этот параметр внутри tasks.json или launch.json, используя интерполяцию строк как "${config.foo.bar}".

Я не уверен, где это задокументировано, но я нашел ссылку на это в https://github.com/Microsoft/vscode/pull/11291

Обновление:

Я создал тестовое репо по адресу https://github.com/boyvinall/vscode-c-dbg. Когда я вызываю задачу «выполнить» в tasks.json, я получаю следующий вывод:

введите здесь описание изображения

Использование через launch.json с моей текущей конфигурацией, похоже, не работает с конфигурацией «gdb», хотя конфигурация «cppdbg», кажется, работает нормально:

введите здесь описание изображения

NB, если это важно, я запускаю vscode v1.8.1.

person boyvinall    schedule 17.01.2017
comment
Кажется, это не работает. Я не получаю никаких неизвестных эталонных ошибок, однако похоже, что ${config.foo.bar}, определенный в settings.json, разрешается в пустую строку. Также код VS выдает предупреждение о неизвестном параметре конфигурации в файле settings.json. - person mar3kk; 17.01.2017
comment
Я обновил ответ ссылкой на репозиторий github, который показывает, как это работает. Вы в состоянии управлять этим? - person boyvinall; 17.01.2017
comment
Этот работает, потому что в settings.json префикс конфигурации должен быть опущен, я пропустил это. Знаете ли вы, можно ли через расширения API предопределять задачи? - person mar3kk; 17.01.2017
comment
Хм, немного не уверен насчет предопределенных задач - извините, я пропустил это раньше. Я постараюсь поковыряться и добавлю сюда комментарий, если мне удастся решить эту проблему. - person boyvinall; 17.01.2017

Код Visual Studio: 1.15.1

settings.json(текущий каталог папки .vscode)

{
"foo.bar": "baz" // custom setting 
}

launch.json (пример)

{
"program": "${workspaceRoot}/${config:foo.bar}.exe"
}

Я искал вокруг нашел его. Но это было устаревшим и пытался понять это. Пока подсказка кода вспомогательной визуальной студии не дала мне информацию при наведении курсора мыши на строки.

"${config.foo.bar}"

не работает.

"${config:foo.bar}"

работает.

person Lightnet    schedule 06.09.2017