提交 cdced4d7 编写于 作者: I isidor

debug: simplify breakopint line number - no longer show how the line number jumped

上级 e3020d00
......@@ -101,7 +101,7 @@ class RunToCursorAction extends EditorAction {
const oneTimeListener = debugService.getViewModel().focusedProcess.session.onDidEvent(event => {
if (event.event === 'stopped' || event.event === 'exit') {
const toRemove = debugService.getModel().getBreakpoints()
.filter(bp => bp.desiredLineNumber === lineNumber && bp.uri.toString() === uri.toString()).pop();
.filter(bp => bp.lineNumber === lineNumber && bp.uri.toString() === uri.toString()).pop();
if (toRemove) {
debugService.removeBreakpoints(toRemove.getId());
}
......
......@@ -186,7 +186,6 @@ export interface IRawBreakpoint {
export interface IBreakpoint extends IEnablement {
uri: uri;
lineNumber: number;
desiredLineNumber: number;
condition: string;
hitCondition: string;
verified: boolean;
......
......@@ -570,7 +570,6 @@ export class Process implements debug.IProcess {
export class Breakpoint implements debug.IBreakpoint {
public lineNumber: number;
public verified: boolean;
public idFromAdapter: number;
public message: string;
......@@ -578,7 +577,7 @@ export class Breakpoint implements debug.IBreakpoint {
constructor(
public uri: uri,
public desiredLineNumber: number,
public lineNumber: number,
public enabled: boolean,
public condition: string,
public hitCondition: string
......@@ -586,7 +585,6 @@ export class Breakpoint implements debug.IBreakpoint {
if (enabled === undefined) {
this.enabled = true;
}
this.lineNumber = this.desiredLineNumber;
this.verified = false;
this.id = generateUuid();
}
......@@ -755,6 +753,9 @@ export class Model implements debug.IModel {
bp.message = bpData.message;
}
});
// Remove duplicate breakpoints. This can happen when an adapter updates a line number of a breakpoint
this.breakpoints = distinct(this.breakpoints, bp => bp.uri.toString() + bp.lineNumber);
this._onDidChangeBreakpoints.fire();
}
......@@ -762,7 +763,6 @@ export class Model implements debug.IModel {
element.enabled = enable;
if (element instanceof Breakpoint && !element.enabled) {
var breakpoint = <Breakpoint>element;
breakpoint.lineNumber = breakpoint.desiredLineNumber;
breakpoint.verified = false;
}
......@@ -773,7 +773,6 @@ export class Model implements debug.IModel {
this.breakpoints.forEach(bp => {
bp.enabled = enable;
if (!enable) {
bp.lineNumber = bp.desiredLineNumber;
bp.verified = false;
}
});
......
......@@ -375,7 +375,7 @@ export class DebugService implements debug.IDebugService {
let result: Breakpoint[];
try {
result = JSON.parse(this.storageService.get(DEBUG_BREAKPOINTS_KEY, StorageScope.WORKSPACE, '[]')).map((breakpoint: any) => {
return new Breakpoint(uri.parse(breakpoint.uri.external || breakpoint.source.uri.external), breakpoint.desiredLineNumber || breakpoint.lineNumber, breakpoint.enabled, breakpoint.condition, breakpoint.hitCondition);
return new Breakpoint(uri.parse(breakpoint.uri.external || breakpoint.source.uri.external), breakpoint.lineNumber, breakpoint.enabled, breakpoint.condition, breakpoint.hitCondition);
});
} catch (e) { }
......@@ -943,10 +943,8 @@ export class DebugService implements debug.IDebugService {
return TPromise.as(null);
}
const breakpointsToSend = distinct(
this.model.getBreakpoints().filter(bp => this.model.areBreakpointsActivated() && bp.enabled && bp.uri.toString() === modelUri.toString()),
bp => `${bp.desiredLineNumber}`
);
const breakpointsToSend = distinct(this.model.getBreakpoints().filter(bp => this.model.areBreakpointsActivated() && bp.enabled && bp.uri.toString() === modelUri.toString()),
bp => bp.lineNumber.toString());
let rawSource: DebugProtocol.Source;
for (let t of process.getAllThreads()) {
......@@ -964,8 +962,8 @@ export class DebugService implements debug.IDebugService {
return session.setBreakpoints({
source: rawSource,
lines: breakpointsToSend.map(bp => bp.desiredLineNumber),
breakpoints: breakpointsToSend.map(bp => ({ line: bp.desiredLineNumber, condition: bp.condition, hitCondition: bp.hitCondition })),
lines: breakpointsToSend.map(bp => bp.lineNumber),
breakpoints: breakpointsToSend.map(bp => ({ line: bp.lineNumber, condition: bp.condition, hitCondition: bp.hitCondition })),
sourceModified
}).then(response => {
if (!response || !response.body) {
......
......@@ -1257,7 +1257,7 @@ export class BreakpointsRenderer implements IRenderer {
this.debugService.getModel().areBreakpointsActivated() ? tree.removeTraits('disabled', [breakpoint]) : tree.addTraits('disabled', [breakpoint]);
data.name.textContent = getPathLabel(paths.basename(breakpoint.uri.fsPath), this.contextService);
data.lineNumber.textContent = breakpoint.desiredLineNumber !== breakpoint.lineNumber ? breakpoint.desiredLineNumber + ' \u2192 ' + breakpoint.lineNumber : '' + breakpoint.lineNumber;
data.lineNumber.textContent = breakpoint.lineNumber.toString();
data.filePath.textContent = getPathLabel(paths.dirname(breakpoint.uri.fsPath), this.contextService);
data.checkbox.checked = breakpoint.enabled;
data.actionBar.context = breakpoint;
......
......@@ -382,7 +382,7 @@ export class BreakpointsView extends AdaptiveCollapsibleViewletView {
return paths.basename(first.uri.fsPath).localeCompare(paths.basename(second.uri.fsPath));
}
return first.desiredLineNumber - second.desiredLineNumber;
return first.lineNumber - second.lineNumber;
}
}
}, debugTreeOptions(nls.localize({ comment: ['Debug is a noun in this context, not a verb.'], key: 'breakpointsAriaTreeLabel' }, "Debug Breakpoints")));
......
......@@ -57,12 +57,10 @@ suite('Debug - Model', () => {
assert.equal(model.getBreakpoints().length, 5);
var bp = model.getBreakpoints()[0];
var originalLineLumber = bp.lineNumber;
const update: any = {};
update[bp.getId()] = { line: 100, verified: false };
model.updateBreakpoints(update);
assert.equal(bp.lineNumber, 100);
assert.equal(bp.desiredLineNumber, originalLineLumber);
model.enableOrDisableAllBreakpoints(false);
model.getBreakpoints().forEach(bp => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册