提交 4854ac31 编写于 作者: I isidor

fixes #25104

上级 bc61f5d9
......@@ -24,7 +24,6 @@ import { Source } from 'vs/workbench/parts/debug/common/debugSource';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
const MAX_REPL_LENGTH = 10000;
const UNKNOWN_SOURCE_LABEL = nls.localize('unknownSource', "Unknown Source");
export abstract class AbstractOutputElement implements ITreeElement {
private static ID_COUNTER = 0;
......@@ -388,7 +387,7 @@ export class StackFrame implements IStackFrame {
public openInEditor(editorService: IWorkbenchEditorService, preserveFocus?: boolean, sideBySide?: boolean): TPromise<any> {
return this.source.name === UNKNOWN_SOURCE_LABEL ? TPromise.as(null) : editorService.openEditor({
return !this.source.available ? TPromise.as(null) : editorService.openEditor({
resource: this.source.uri,
description: this.source.origin,
options: {
......@@ -466,10 +465,7 @@ export class Thread implements IThread {
}
return response.body.stackFrames.map((rsf, level) => {
if (!rsf) {
return new StackFrame(this, 0, new Source({ name: UNKNOWN_SOURCE_LABEL }, rsf.presentationHint), nls.localize('unknownStack', "Unknown stack location"), null, null);
}
let source = rsf.source ? new Source(rsf.source, rsf.source.presentationHint) : new Source({ name: UNKNOWN_SOURCE_LABEL }, rsf.presentationHint);
let source = new Source(rsf.source, rsf.source ? rsf.source.presentationHint : rsf.presentationHint);
if (this.process.sources.has(source.uri.toString())) {
const alreadyCreatedSource = this.process.sources.get(source.uri.toString());
alreadyCreatedSource.presenationHint = source.presenationHint;
......
......@@ -3,16 +3,22 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as nls from 'vs/nls';
import uri from 'vs/base/common/uri';
import { DEBUG_SCHEME } from 'vs/workbench/parts/debug/common/debug';
const UNKNOWN_SOURCE_LABEL = nls.localize('unknownSource', "Unknown Source");
export class Source {
public uri: uri;
constructor(public raw: DebugProtocol.Source, public presenationHint: string) {
const path = raw.path || raw.name;
this.uri = raw.sourceReference > 0 ? uri.parse(`${DEBUG_SCHEME}:${path}`) : uri.file(path);
if (!raw) {
this.raw = { name: UNKNOWN_SOURCE_LABEL };
}
const path = this.raw.path || this.raw.name;
this.uri = this.raw.sourceReference > 0 ? uri.parse(`${DEBUG_SCHEME}:${path}`) : uri.file(path);
}
public get name() {
......@@ -27,6 +33,10 @@ export class Source {
return this.raw.sourceReference;
}
public get available() {
return this.raw.name !== UNKNOWN_SOURCE_LABEL;
}
public get inMemory() {
return this.uri.toString().indexOf(`${DEBUG_SCHEME}:`) === 0;
}
......
......@@ -294,7 +294,7 @@ export class DebugService implements debug.IDebugService {
thread.fetchCallStack().then(callStack => {
if (callStack.length > 0 && !this.viewModel.focusedStackFrame) {
// focus first stack frame from top that has source location if no other stack frame is focussed
const stackFrameToFocus = first(callStack, sf => !!sf.source, callStack[0]);
const stackFrameToFocus = first(callStack, sf => sf.source && sf.source.available, callStack[0]);
this.focusStackFrameAndEvaluate(stackFrameToFocus).done(null, errors.onUnexpectedError);
this.windowService.getWindow().focus();
aria.alert(nls.localize('debuggingPaused', "Debugging paused, reason {0}, {1} {2}", event.body.reason, stackFrameToFocus.source ? stackFrameToFocus.source.name : '', stackFrameToFocus.lineNumber));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册