From 39983902eb09bf3bd9d67eb4e8e079ed80ac894c Mon Sep 17 00:00:00 2001 From: Vincent Fugnitto Date: Mon, 4 Nov 2019 11:07:22 -0500 Subject: [PATCH] Automatically create 'launch.json' Automatically creates the `launch.json` file when executing the command `start debugging` whenever a `launch.json` does not exist under `.theia` or `.vscode`. Once created, users are prompted to select the type of debug configuration they desire. Signed-off-by: Vincent Fugnitto --- .../debug-frontend-application-contribution.ts | 5 +++++ .../src/browser/view/debug-configuration-widget.tsx | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/debug/src/browser/debug-frontend-application-contribution.ts b/packages/debug/src/browser/debug-frontend-application-contribution.ts index b84e8f9180163..43035b1b51615 100644 --- a/packages/debug/src/browser/debug-frontend-application-contribution.ts +++ b/packages/debug/src/browser/debug-frontend-application-contribution.ts @@ -947,6 +947,11 @@ export class DebugFrontendApplicationContribution extends AbstractViewContributi async start(noDebug?: boolean): Promise { let { current } = this.configurations; + // If no current configurations are present, create the `launch.json` and prompt users to select the config. + if (!current) { + await this.configurations.addConfiguration(); + return; + } if (current) { if (noDebug !== undefined) { current = { diff --git a/packages/debug/src/browser/view/debug-configuration-widget.tsx b/packages/debug/src/browser/view/debug-configuration-widget.tsx index d6929324cf48e..157fe46c575c0 100644 --- a/packages/debug/src/browser/view/debug-configuration-widget.tsx +++ b/packages/debug/src/browser/view/debug-configuration-widget.tsx @@ -26,10 +26,15 @@ import { DebugSessionManager } from '../debug-session-manager'; import { DebugAction } from './debug-action'; import { DebugViewModel } from './debug-view-model'; import { DebugSessionOptions } from '../debug-session-options'; +import { DebugCommands } from '../debug-frontend-application-contribution'; +import { CommandRegistry } from '@theia/core/lib/common'; @injectable() export class DebugConfigurationWidget extends ReactWidget { + @inject(CommandRegistry) + protected readonly commandRegistry: CommandRegistry; + @inject(DebugViewModel) protected readonly viewModel: DebugViewModel; @@ -118,11 +123,7 @@ export class DebugConfigurationWidget extends ReactWidget { protected readonly start = () => { const configuration = this.manager.current; - if (configuration) { - this.sessionManager.start(configuration); - } else { - this.manager.addConfiguration(); - } + this.commandRegistry.executeCommand(DebugCommands.START.id, configuration); } protected readonly openConfiguration = () => this.manager.openConfiguration();