add proposed 'startDebugging' API

This commit is contained in:
Andre Weinand
2017-07-18 21:15:10 +02:00
parent 77eed5ad44
commit 6f4ebe7517
5 changed files with 34 additions and 0 deletions
+12
View File
@@ -121,4 +121,16 @@ declare module 'vscode' {
*/
export function registerDiffInformationCommand(command: string, callback: (diff: LineChange[], ...args: any[]) => any, thisArg?: any): Disposable;
}
export namespace debug {
/**
* Start debugging by using either a named launch or named compound configuration,
* or by directly passing a DebugConfiguration.
* Before debugging starts, all unsaved files are saved and the launch configurations are up-to-date.
* @param nameOrConfiguration Either the name of a debug or compound configuration or a DebugConfiguration object.
* @return A thenable that resolves when debugging could be successfully started.
*/
export function startDebugging(nameOrConfiguration: string | DebugConfiguration): Thenable<boolean>;
}
}
@@ -44,6 +44,19 @@ export class MainThreadDebugService extends MainThreadDebugServiceShape {
this._toDispose = dispose(this._toDispose);
}
public $startDebugging(nameOrConfiguration: string | IConfig): TPromise<boolean> {
if (typeof nameOrConfiguration === 'string') {
return this.debugService.startDebugging(nameOrConfiguration).then(x => {
return true;
}, err => {
return TPromise.wrapError(err && err.message ? err.message : 'cannot start debugging');
});
} else {
return TPromise.wrapError(new Error('startDebugging with configuration object not yet implemented'));
}
}
public $startDebugSession(configuration: IConfig): TPromise<DebugSessionUUID> {
if (configuration.request !== 'launch' && configuration.request !== 'attach') {
return TPromise.wrapError(new Error(`only 'launch' or 'attach' allowed for 'request' attribute`));
@@ -467,6 +467,9 @@ export function createApiFactory(
get activeDebugSession() {
return extHostDebugService.activeDebugSession;
},
startDebugging: proposedApiFunction(extension, (nameOrConfig: string | vscode.DebugConfiguration) => {
return extHostDebugService.startDebugging(nameOrConfig);
}),
startDebugSession(config: vscode.DebugConfiguration) {
return extHostDebugService.startDebugSession(config);
},
@@ -345,6 +345,7 @@ export abstract class MainThreadSCMShape {
export type DebugSessionUUID = string;
export abstract class MainThreadDebugServiceShape {
$startDebugging(nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean> { throw ni(); }
$startDebugSession(config: vscode.DebugConfiguration): TPromise<DebugSessionUUID> { throw ni(); }
$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any> { throw ni(); }
}
@@ -45,6 +45,11 @@ export class ExtHostDebugService extends ExtHostDebugServiceShape {
this._debugServiceProxy = threadService.get(MainContext.MainThreadDebugService);
}
public startDebugging(nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean> {
return this._debugServiceProxy.$startDebugging(nameOrConfig);
}
public startDebugSession(config: vscode.DebugConfiguration): TPromise<vscode.DebugSession> {
return this._debugServiceProxy.$startDebugSession(config).then((id: DebugSessionUUID) => {