From 48719873f30ba847832ab152d12e67c4e716c509 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 21 Mar 2016 18:42:51 +0100 Subject: [PATCH 1/2] checks models when file events happen --- src/vs/workbench/api/node/extHostDocuments.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/node/extHostDocuments.ts b/src/vs/workbench/api/node/extHostDocuments.ts index ba54138a9b5..1a5fa0f29df 100644 --- a/src/vs/workbench/api/node/extHostDocuments.ts +++ b/src/vs/workbench/api/node/extHostDocuments.ts @@ -494,13 +494,19 @@ export class MainThreadDocuments { modelService.onModelModeChanged(this._onModelModeChanged, this, this._toDispose); this._toDispose.push(eventService.addListener2(FileEventType.FILE_SAVED, (e: LocalFileChangeEvent) => { - this._proxy._acceptModelSaved(e.getAfter().resource.toString()); + if (this._shouldHandleFileEvent(e)) { + this._proxy._acceptModelSaved(e.getAfter().resource.toString()); + } })); this._toDispose.push(eventService.addListener2(FileEventType.FILE_REVERTED, (e: LocalFileChangeEvent) => { - this._proxy._acceptModelReverted(e.getAfter().resource.toString()); + if (this._shouldHandleFileEvent(e)) { + this._proxy._acceptModelReverted(e.getAfter().resource.toString()); + } })); this._toDispose.push(eventService.addListener2(FileEventType.FILE_DIRTY, (e: LocalFileChangeEvent) => { - this._proxy._acceptModelDirty(e.getAfter().resource.toString()); + if (this._shouldHandleFileEvent(e)) { + this._proxy._acceptModelDirty(e.getAfter().resource.toString()); + } })); const handle = setInterval(() => this._runDocumentCleanup(), 30 * 1000); @@ -519,6 +525,12 @@ export class MainThreadDocuments { this._toDispose = disposeAll(this._toDispose); } + private _shouldHandleFileEvent(e: LocalFileChangeEvent): boolean { + const after = e.getAfter(); + const model = this._modelService.getModel(after.resource); + return !model && !model.isTooLargeForHavingARichMode(); + } + private _onModelAdded(model: EditorCommon.IModel): void { // Same filter as in mainThreadEditors if (model.isTooLargeForHavingARichMode()) { From b3d7ef4a4f0e9a735277abdef8beb9a1fc51c7ea Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 22 Mar 2016 11:55:28 +0100 Subject: [PATCH 2/2] ops --- src/vs/workbench/api/node/extHostDocuments.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/api/node/extHostDocuments.ts b/src/vs/workbench/api/node/extHostDocuments.ts index 1a5fa0f29df..3034ab02dc7 100644 --- a/src/vs/workbench/api/node/extHostDocuments.ts +++ b/src/vs/workbench/api/node/extHostDocuments.ts @@ -528,7 +528,7 @@ export class MainThreadDocuments { private _shouldHandleFileEvent(e: LocalFileChangeEvent): boolean { const after = e.getAfter(); const model = this._modelService.getModel(after.resource); - return !model && !model.isTooLargeForHavingARichMode(); + return model && !model.isTooLargeForHavingARichMode(); } private _onModelAdded(model: EditorCommon.IModel): void {