diff --git a/src/vs/workbench/parts/debug/browser/debugContentProvider.ts b/src/vs/workbench/parts/debug/browser/debugContentProvider.ts index ceb3ae21200..e30d3cc43a5 100644 --- a/src/vs/workbench/parts/debug/browser/debugContentProvider.ts +++ b/src/vs/workbench/parts/debug/browser/debugContentProvider.ts @@ -6,14 +6,13 @@ import * as lifecycle from 'vs/base/common/lifecycle'; import uri from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { guessMimeTypes } from 'vs/base/common/mime'; +import { guessMimeTypes, MIME_TEXT } from 'vs/base/common/mime'; import { IModel } from 'vs/editor/common/editorCommon'; import { IModelService } from 'vs/editor/common/services/modelService'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ITextModelResolverService, ITextModelContentProvider } from 'vs/editor/common/services/resolverService'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { DEBUG_SCHEME, IDebugService, State } from 'vs/workbench/parts/debug/common/debug'; -import { Model } from 'vs/workbench/parts/debug/common/debugModel'; import { Source } from 'vs/workbench/parts/debug/common/debugSource'; export class DebugContentProvider implements IWorkbenchContribution, ITextModelContentProvider { @@ -52,9 +51,12 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC this.modelsToDispose.push(model); return model; - }, err => { - (this.debugService.getModel()).sourceIsUnavailable(resource); - return err; + }, (err: DebugProtocol.ErrorResponse) => { + this.debugService.deemphasizeSource(resource); + const modePromise = this.modeService.getOrCreateMode(MIME_TEXT); + const model = this.modelService.createModel(err.message, modePromise, resource); + + return model; }); } } diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index e20e4ea4011..ea687355b40 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -476,6 +476,11 @@ export interface IDebugService { */ restartProcess(process: IProcess): TPromise; + /** + * Deemphasizes all sources with the passed uri. Source will appear as grayed out in callstack view. + */ + deemphasizeSource(uri: uri): void; + /** * Gets the current debug model. */ diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts index ddd0be8e6d7..22e04dc39d2 100644 --- a/src/vs/workbench/parts/debug/common/debugModel.ts +++ b/src/vs/workbench/parts/debug/common/debugModel.ts @@ -556,7 +556,7 @@ export class Process implements debug.IProcess { } } - public sourceIsUnavailable(uri: uri): void { + public deemphasizeSource(uri: uri): void { this.threads.forEach(thread => { thread.getCallStack().forEach(stackFrame => { if (stackFrame.source.uri.toString() === uri.toString()) { @@ -926,8 +926,8 @@ export class Model implements debug.IModel { this._onDidChangeWatchExpressions.fire(); } - public sourceIsUnavailable(uri: uri): void { - this.processes.forEach(p => p.sourceIsUnavailable(uri)); + public deemphasizeSource(uri: uri): void { + this.processes.forEach(p => p.deemphasizeSource(uri)); this._onDidChangeCallStack.fire(); } diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 09f24ecf255..491236fac10 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -801,6 +801,10 @@ export class DebugService implements debug.IDebugService { }); } + public deemphasizeSource(uri: uri): void { + this.model.deemphasizeSource(uri); + } + public restartProcess(process: debug.IProcess): TPromise { if (!process) { return this.createProcess(this.viewModel.selectedConfigurationName); diff --git a/src/vs/workbench/parts/debug/test/common/mockDebug.ts b/src/vs/workbench/parts/debug/test/common/mockDebug.ts index 5a14dd02372..7e8acab6248 100644 --- a/src/vs/workbench/parts/debug/test/common/mockDebug.ts +++ b/src/vs/workbench/parts/debug/test/common/mockDebug.ts @@ -86,6 +86,8 @@ export class MockDebugService implements debug.IDebugService { public getViewModel(): debug.IViewModel { return null; } + + public deemphasizeSource(uri: uri): void { } } export class MockSession implements debug.ISession {