mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 13:46:13 +00:00
debug: dispose created internal source models on debug session end
#18148
This commit is contained in:
parent
9eb91d2de4
commit
5ab7523103
|
@ -3,6 +3,7 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
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';
|
||||
|
@ -10,13 +11,15 @@ 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 { DEBUG_SCHEME, IDebugService } from 'vs/workbench/parts/debug/common/debug';
|
||||
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';
|
||||
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
|
||||
|
||||
export class DebugContentProvider implements IWorkbenchContribution, ITextModelContentProvider {
|
||||
|
||||
private modelsToDispose: IModel[];
|
||||
|
||||
constructor(
|
||||
@ITextModelResolverService textModelResolverService: ITextModelResolverService,
|
||||
@IDebugService private debugService: IDebugService,
|
||||
|
@ -24,6 +27,12 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC
|
|||
@IModeService private modeService: IModeService
|
||||
) {
|
||||
textModelResolverService.registerTextModelContentProvider(DEBUG_SCHEME, this);
|
||||
this.modelsToDispose = [];
|
||||
this.debugService.onDidChangeState(() => {
|
||||
if (this.debugService.state === State.Inactive) {
|
||||
this.modelsToDispose = lifecycle.dispose(this.modelsToDispose);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public getId(): string {
|
||||
|
@ -39,8 +48,10 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC
|
|||
return process.session.source({ sourceReference: Source.getSourceReference(resource) }).then(response => {
|
||||
const mime = response.body.mimeType || guessMimeTypes(resource.toString())[0];
|
||||
const modePromise = this.modeService.getOrCreateMode(mime);
|
||||
const model = this.modelService.createModel(response.body.content, modePromise, resource);
|
||||
this.modelsToDispose.push(model);
|
||||
|
||||
return this.modelService.createModel(response.body.content, modePromise, resource);
|
||||
return model;
|
||||
}, err => {
|
||||
(<Model>this.debugService.getModel()).sourceIsUnavailable(resource);
|
||||
return err;
|
||||
|
|
Loading…
Reference in a new issue