diff --git a/src/vs/platform/editor/common/editor.ts b/src/vs/platform/editor/common/editor.ts index 9b7cc2e9f5eb7c75fd0b7d30cf0e02aae33eb9dc..389538ef883343c5fc5a94678a628ecb680c3bd3 100644 --- a/src/vs/platform/editor/common/editor.ts +++ b/src/vs/platform/editor/common/editor.ts @@ -8,6 +8,7 @@ import URI from 'vs/base/common/uri'; import {TPromise} from 'vs/base/common/winjs.base'; import {createDecorator} from 'vs/platform/instantiation/common/instantiation'; import Event from 'vs/base/common/event'; +import {IDisposable} from 'vs/base/common/lifecycle'; export const IEditorService = createDecorator('editorService'); @@ -127,7 +128,7 @@ export enum Direction { RIGHT } -export interface IEditorInput { +export interface IEditorInput extends IDisposable { onDispose: Event; diff --git a/src/vs/workbench/api/node/mainThreadDocuments.ts b/src/vs/workbench/api/node/mainThreadDocuments.ts index c106c5e4073d5ef79fa0f79ac0ae76b52c57df24..ecd9ee3ebf025cd72b00e402756a28cf39bf6c3c 100644 --- a/src/vs/workbench/api/node/mainThreadDocuments.ts +++ b/src/vs/workbench/api/node/mainThreadDocuments.ts @@ -252,6 +252,10 @@ export class MainThreadDocuments extends MainThreadDocumentsShape { if (!this._editorService.isVisible(input, true)) { toBeDisposed.push(resource); } + + if (input) { + input.dispose(); + } }); })).then(() => { for (let resource of toBeDisposed) { diff --git a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts index d4faecd8ab5349c5c47d84d20afd12e523406ebf..d111e897e388e9023a578ca093c5ed8abc06e122 100644 --- a/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts +++ b/src/vs/workbench/parts/files/browser/editors/textFileEditor.ts @@ -199,10 +199,8 @@ export class TextFileEditor extends BaseTextEditor { } private openAsBinary(input: FileEditorInput, options: EditorOptions): void { - const fileInputBinary = this.instantiationService.createInstance(FileEditorInput, input.getResource(), void 0); - fileInputBinary.setForceOpenAsBinary(); - - this.editorService.openEditor(fileInputBinary, options, this.position).done(null, errors.onUnexpectedError); + input.setForceOpenAsBinary(); + this.editorService.openEditor(input, options, this.position).done(null, errors.onUnexpectedError); } private openAsFolder(input: FileEditorInput): boolean { diff --git a/src/vs/workbench/services/editor/browser/editorService.ts b/src/vs/workbench/services/editor/browser/editorService.ts index bfbbbeaaa1c451fbaf69f8f374bac20418567ef9..37021f28a3d9d7e0c3bce1fc4f64791bad55bff7 100644 --- a/src/vs/workbench/services/editor/browser/editorService.ts +++ b/src/vs/workbench/services/editor/browser/editorService.ts @@ -69,7 +69,7 @@ export class WorkbenchEditorService implements IWorkbenchEditorService { return false; } - return this.getVisibleEditors().some((editor) => { + return this.getVisibleEditors().some(editor => { if (!editor.input) { return false; } @@ -107,6 +107,7 @@ export class WorkbenchEditorService implements IWorkbenchEditorService { const schema = resourceInput.resource.scheme; if (schema === network.Schemas.http || schema === network.Schemas.https) { window.open(resourceInput.resource.toString(true)); + return TPromise.as(null); } }