提交 fc4ae774 编写于 作者: I isidor

Honor 'deemphasize' hint of Source objects in CALL STACK view

fixes #18396
上级 3eb77a67
......@@ -432,10 +432,10 @@ export class Thread implements debug.IThread {
return response.body.stackFrames.map((rsf, level) => {
if (!rsf) {
return new StackFrame(this, 0, new Source({ name: UNKNOWN_SOURCE_LABEL }, false), nls.localize('unknownStack', "Unknown stack location"), null, null);
return new StackFrame(this, 0, new Source({ name: UNKNOWN_SOURCE_LABEL }, true), nls.localize('unknownStack', "Unknown stack location"), null, null);
}
return new StackFrame(this, rsf.id, rsf.source ? new Source(rsf.source) : new Source({ name: UNKNOWN_SOURCE_LABEL }, false), rsf.name, rsf.line, rsf.column);
return new StackFrame(this, rsf.id, rsf.source ? new Source(rsf.source, rsf.source.presentationHint === 'deemphasize') : new Source({ name: UNKNOWN_SOURCE_LABEL }, true), rsf.name, rsf.line, rsf.column);
});
}, (err: Error) => {
if (this.stoppedDetails) {
......@@ -560,7 +560,7 @@ export class Process implements debug.IProcess {
this.threads.forEach(thread => {
thread.getCallStack().forEach(stackFrame => {
if (stackFrame.source.uri.toString() === uri.toString()) {
stackFrame.source.available = false;
stackFrame.source.deemphasize = true;
}
});
});
......
......@@ -9,14 +9,12 @@ import { DEBUG_SCHEME } from 'vs/workbench/parts/debug/common/debug';
export class Source {
public uri: uri;
public available: boolean;
private static INTERNAL_URI_PREFIX = `${DEBUG_SCHEME}://internal/`;
constructor(public raw: DebugProtocol.Source, available = true) {
constructor(public raw: DebugProtocol.Source, public deemphasize: boolean) {
const path = raw.path || raw.name;
this.uri = raw.sourceReference > 0 ? uri.parse(Source.INTERNAL_URI_PREFIX + raw.sourceReference + '/' + path) : uri.file(path);
this.available = available;
}
public get name() {
......
......@@ -554,7 +554,7 @@ export class CallStackRenderer implements IRenderer {
}
private renderStackFrame(stackFrame: debug.IStackFrame, data: IStackFrameTemplateData): void {
stackFrame.source.available ? dom.removeClass(data.stackFrame, 'disabled') : dom.addClass(data.stackFrame, 'disabled');
stackFrame.source.deemphasize ? dom.addClass(data.stackFrame, 'disabled') : dom.removeClass(data.stackFrame, 'disabled');
data.file.title = stackFrame.source.raw.path || stackFrame.source.name;
data.label.textContent = stackFrame.name;
data.label.title = stackFrame.name;
......
......@@ -15,9 +15,9 @@ suite('Debug - Source', () => {
path: '/xx/yy/zz',
sourceReference: 0
};
const source = new Source(rawSource);
const source = new Source(rawSource, false);
assert.equal(source.available, true);
assert.equal(source.deemphasize, false);
assert.equal(source.name, rawSource.name);
assert.equal(source.inMemory, false);
assert.equal(source.reference, rawSource.sourceReference);
......@@ -30,9 +30,9 @@ suite('Debug - Source', () => {
name: 'internalModule.js',
sourceReference: 11
};
const source = new Source(rawSource);
const source = new Source(rawSource, true);
assert.equal(source.available, true);
assert.equal(source.deemphasize, true);
assert.equal(source.name, rawSource.name);
assert.equal(source.inMemory, true);
assert.equal(source.reference, rawSource.sourceReference);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册