Skip to content

Commit

Permalink
Automatically create 'launch.json'
Browse files Browse the repository at this point in the history
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 <vincent.fugnitto@ericsson.com>
  • Loading branch information
vince-fugnitto committed Nov 5, 2019
1 parent 05f2e07 commit 3482288
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import { DebugService } from '../common/debug-service';
import { DebugSchemaUpdater } from './debug-schema-updater';
import { DebugPreferences } from './debug-preferences';
import { TabBarToolbarContribution, TabBarToolbarRegistry, TabBarToolbarItem } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
import { DebugSessionOptions } from './debug-session-options';

export namespace DebugMenus {
export const DEBUG = [...MAIN_MENU_BAR, '6_debug'];
Expand Down Expand Up @@ -512,10 +513,10 @@ export class DebugFrontendApplicationContribution extends AbstractViewContributi
registerCommands(registry: CommandRegistry): void {
super.registerCommands(registry);
registry.registerCommand(DebugCommands.START, {
execute: () => this.start()
execute: (config?: DebugSessionOptions) => this.start(false, config)
});
registry.registerCommand(DebugCommands.START_NO_DEBUG, {
execute: () => this.start(true)
execute: (config?: DebugSessionOptions) => this.start(true, config)
});
registry.registerCommand(DebugCommands.STOP, {
execute: () => this.manager.currentSession && this.manager.currentSession.terminate(),
Expand Down Expand Up @@ -945,8 +946,13 @@ export class DebugFrontendApplicationContribution extends AbstractViewContributi
return widget;
}

async start(noDebug?: boolean): Promise<void> {
let { current } = this.configurations;
async start(noDebug?: boolean, debugSessionOptions?: DebugSessionOptions): Promise<void> {
let current = debugSessionOptions ? debugSessionOptions : this.configurations.current;
// If no configurations are currently 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 = {
Expand Down
11 changes: 6 additions & 5 deletions packages/debug/src/browser/view/debug-configuration-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 3482288

Please sign in to comment.