提交 af809a59 编写于 作者: A Andre Weinand

API: expose debug console; fixes #36753

上级 fa4c5561
......@@ -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;
}
}
......@@ -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 {
......@@ -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);
}
}
......@@ -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);
},
......@@ -506,7 +509,7 @@ export function createApiFactory(
},
registerDebugConfigurationProvider(debugType: string, provider: vscode.DebugConfigurationProvider) {
return extHostDebugService.registerDebugConfigurationProvider(debugType, provider);
},
}
};
// namespace: credentials
......
......@@ -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 {
......
......@@ -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) {
......@@ -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 {
......@@ -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;
......@@ -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');
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册