提交 399451e9 编写于 作者: I isidor

debug: nicer function breakpoints api

上级 33f4c314
......@@ -239,7 +239,7 @@ export interface IDebugService extends ee.IEventEmitter {
sendAllBreakpoints(): TPromise<any>;
editBreakpoint(editor: editorbrowser.ICodeEditor, lineNumber: number): TPromise<void>;
addFunctionBreakpoint(functionName?: string): TPromise<void>;
addFunctionBreakpoint(): void;
renameFunctionBreakpoint(id: string, newFunctionName: string): TPromise<void>;
removeFunctionBreakpoints(id?: string): TPromise<void>;
......
......@@ -406,7 +406,7 @@ export class Model extends ee.EventEmitter implements debug.IModel {
this.emit(debug.ModelEvents.BREAKPOINTS_UPDATED);
}
public updateBreakpoints(data: { [id: string]: { line?: number, verified: boolean } }): void {
public updateBreakpoints(data: { [id: string]: DebugProtocol.Breakpoint }): void {
this.breakpoints.forEach(bp => {
const bpData = data[bp.getId()];
if (bpData) {
......@@ -447,12 +447,16 @@ export class Model extends ee.EventEmitter implements debug.IModel {
this.emit(debug.ModelEvents.BREAKPOINTS_UPDATED);
}
public renameFunctionBreakpoint(id: string, newFunctionName: string): void {
const fbp = this.functionBreakpoints.filter(bp => bp.getId() === id).pop();
if (fbp) {
fbp.name = newFunctionName;
this.emit(debug.ModelEvents.BREAKPOINTS_UPDATED);
}
public updateFunctionBreakpoints(data: { [id: string]: { name?: string, verified?: boolean } }): void {
this.functionBreakpoints.forEach(fbp => {
const fbpData = data[fbp.getId()];
if (fbpData) {
fbp.name = fbpData.name || fbp.name;
fbp.verified = fbpData.verified;
}
});
this.emit(debug.ModelEvents.BREAKPOINTS_UPDATED);
}
public removeFunctionBreakpoints(id?: string): void {
......
......@@ -442,13 +442,12 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
return TPromise.as(null);
}
public addFunctionBreakpoint(functionName?: string): TPromise<void> {
this.model.addFunctionBreakpoint(functionName);
return this.sendFunctionBreakpoints();
public addFunctionBreakpoint(): void {
this.model.addFunctionBreakpoint('');
}
public renameFunctionBreakpoint(id: string, newFunctionName: string): TPromise<void> {
this.model.renameFunctionBreakpoint(id, newFunctionName);
this.model.updateFunctionBreakpoints({ [id]: { name: newFunctionName } });
return this.sendFunctionBreakpoints();
}
......@@ -814,10 +813,14 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
return TPromise.as(null);
}
const breakpoints = this.model.getFunctionBreakpoints().filter(fbp => fbp.enabled);
return this.session.setFunctionBreakpoints({ breakpoints }).then(response => {
let index = 0;
breakpoints.forEach(bp => bp.verified = response.body.breakpoints[index++].verified);
const breakpointsToSend = this.model.getFunctionBreakpoints().filter(fbp => fbp.enabled);
return this.session.setFunctionBreakpoints({ breakpoints: breakpointsToSend }).then(response => {
const data: {[id: string]: { name?: string, verified?: boolean } } = { };
for (let i = 0; i < breakpointsToSend.length; i++) {
data[breakpointsToSend[i].getId()] = response.body.breakpoints[i];
}
this.model.updateFunctionBreakpoints(data);
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册