Skip to content

Commit

Permalink
API: expose debug console; fixes #36753
Browse files Browse the repository at this point in the history
  • Loading branch information
weinand committed Oct 24, 2017
1 parent fa4c556 commit af809a5
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 2 deletions.
27 changes: 27 additions & 0 deletions src/vs/vscode.proposed.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,4 +190,31 @@ declare module 'vscode' {
}

//#endregion

/**
* Represents the debug console.
*/
export interface DebugConsole {
/**
* Append the given value to the debug console.
*
* @param value A string, falsy values will not be printed.
*/
append(value: string): void;

/**
* Append the given value and a line feed character
* to the debug console.
*
* @param value A string, falsy values will be printed.
*/
appendLine(value: string): void;
}

export namespace debug {
/**
* The [debug console](#DebugConsole) singleton.
*/
export let console: DebugConsole;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { ExtHostContext, ExtHostDebugServiceShape, MainThreadDebugServiceShape, DebugSessionUUID, MainContext, IExtHostContext } from '../node/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import severity from 'vs/base/common/severity';

@extHostNamedCustomer(MainContext.MainThreadDebugService)
export class MainThreadDebugService implements MainThreadDebugServiceShape {
Expand Down Expand Up @@ -93,4 +94,10 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape {
}
return TPromise.wrapError(new Error('debug session not found'));
}

public $appendDebugConsole(value: string): TPromise<any> {
// Use warning as severity to get the orange color for messages coming from the debug extension
this.debugService.logToRepl(value, severity.Warning);
return TPromise.as<void>(undefined);
}
}
5 changes: 4 additions & 1 deletion src/vs/workbench/api/node/extHost.api.impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,9 @@ export function createApiFactory(
get activeDebugSession() {
return extHostDebugService.activeDebugSession;
},
get console() {
return extHostDebugService.debugConsole;
},
startDebugging(folder: vscode.WorkspaceFolder | undefined, nameOrConfig: string | vscode.DebugConfiguration) {
return extHostDebugService.startDebugging(folder, nameOrConfig);
},
Expand All @@ -506,7 +509,7 @@ export function createApiFactory(
},
registerDebugConfigurationProvider(debugType: string, provider: vscode.DebugConfigurationProvider) {
return extHostDebugService.registerDebugConfigurationProvider(debugType, provider);
},
}
};

// namespace: credentials
Expand Down
1 change: 1 addition & 0 deletions src/vs/workbench/api/node/extHost.protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,7 @@ export interface MainThreadDebugServiceShape extends IDisposable {
$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
$startDebugging(folder: URI | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
$appendDebugConsole(value: string): TPromise<any>;
}

export interface MainThreadCredentialsShape extends IDisposable {
Expand Down
24 changes: 23 additions & 1 deletion src/vs/workbench/api/node/extHostDebugService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
private _onDidReceiveDebugSessionCustomEvent: Emitter<vscode.DebugSessionCustomEvent>;
get onDidReceiveDebugSessionCustomEvent(): Event<vscode.DebugSessionCustomEvent> { return this._onDidReceiveDebugSessionCustomEvent.event; }

private _debugConsole: ExtHostDebugConsole;
get debugConsole(): ExtHostDebugConsole { return this._debugConsole; }


constructor(mainContext: IMainContext, workspace: ExtHostWorkspace) {

Expand All @@ -54,6 +57,8 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
this._onDidReceiveDebugSessionCustomEvent = new Emitter<vscode.DebugSessionCustomEvent>();

this._debugServiceProxy = mainContext.get(MainContext.MainThreadDebugService);

this._debugConsole = new ExtHostDebugConsole(this._debugServiceProxy);
}

public registerDebugConfigurationProvider(type: string, provider: vscode.DebugConfigurationProvider): vscode.Disposable {
Expand Down Expand Up @@ -178,7 +183,7 @@ export class ExtHostDebugSession implements vscode.DebugSession {
this._id = id;
this._type = type;
this._name = name;
};
}

public get id(): string {
return this._id;
Expand All @@ -196,3 +201,20 @@ export class ExtHostDebugSession implements vscode.DebugSession {
return this._debugServiceProxy.$customDebugAdapterRequest(this._id, command, args);
}
}

export class ExtHostDebugConsole implements vscode.DebugConsole {

private _debugServiceProxy: MainThreadDebugServiceShape;

constructor(proxy: MainThreadDebugServiceShape) {
this._debugServiceProxy = proxy;
}

append(value: string): void {
this._debugServiceProxy.$appendDebugConsole(value);
}

appendLine(value: string): void {
this.append(value + '\n');
}
}

0 comments on commit af809a5

Please sign in to comment.