Как я могу передать пользовательские настройки для отладки адаптера?

Я пишу отладки адаптер vscode для моего языка программирования, так и не понял, как передать параметры конфигурации вниз для отладки адаптера.

Для того, чтобы помочь мне. Не могли бы вы объяснить, как сделать следующий абсурдный пример? Я просто сделать это ясно, что я пытаюсь достичь.

Что я должен сделать, чтобы передать переменные, такие как «css.lint.zeroUnits», «explorer.openEditors.visible», «workbench.editor.showTabs»

Чтобы адаптер отладки, так что он может читать их, когда он начинает, адаптер отладки, такие как этот: https://github.com/Microsoft/vscode-mock-debug/blob/master/src/mockDebug.ts»отн=

Есть небольшое число переменных конфигурации, я хочу, чтобы пройти, и все они определяются моим пакет расширения, а адаптер отладки.


person Cheery    schedule 05.08.2016    source источник
comment
Я думаю, вы поняли, как передать простых типов в адаптере отладки (через экземпляр пользовательского DebugConfigurationProvider), которые появляются в _2 _ аргумент для launchRequest или attachRequest в вашей отладки adapator. К сожалению, это Безразлично»работа для объектов или функций.   -  person Mike Lischke    schedule 26.12.2017


Ответы (1)


Если вы реализуете resolveDebugConfiguration вы можете прикрепить дополнительные поля в _2 _ поле передается _3 _ / _ 4_. Мы используем это для многих вещей в расширении Dart, чтобы передать настройки и вещи через:

    debugConfig.type = debugConfig.type || "dart";
    debugConfig.request = debugConfig.request || "launch";
    debugConfig.cwd = debugConfig.cwd || (folder && fsPath(folder.uri));
    debugConfig.args = debugConfig.args || [];
    debugConfig.vmAdditionalArgs = debugConfig.vmAdditionalArgs || conf.vmAdditionalArgs;
    debugConfig.vmServicePort = debugConfig.vmServicePort || (isChromeOS && config.useKnownChromeOSPorts ? CHROME_OS_VM_SERVICE_PORT : 0);
    debugConfig.dartPath = debugConfig.dartPath || path.join(this.sdks.dart!, dartVMPath);

Эти можно прочитать с поля args (который вы можете использовать интерфейс для обеспечения полей совпадают с обеих сторон):

protected launchRequest(response: DebugProtocol.LaunchResponse, args: DartLaunchRequestArguments): void {
    if (!args || !args.dartPath || (this.requiresProgram && !args.program)) {
person Danny Tuppeny    schedule 29.12.2019