From 3248b9469e612fa116bc096e71398fa70f66d58a Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 26 Aug 2016 11:24:01 +0200 Subject: [PATCH] on model remove dispose listener, clear timeout, fixes #10 --- src/languageFeatures.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index bb20fbe1..5356ffc6 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -58,16 +58,27 @@ export class DiagnostcsAdapter extends Adapter { } let handle: number; - this._listener[model.uri.toString()] = model.onDidChangeContent(() => { + const changeSubscription = model.onDidChangeContent(() => { clearTimeout(handle); handle = setTimeout(() => this._doValidate(model.uri), 500); }); + this._listener[model.uri.toString()] = { + dispose() { + changeSubscription.dispose(); + clearTimeout(handle); + } + }; + this._doValidate(model.uri); }; const onModelRemoved = (model: monaco.editor.IModel): void => { - delete this._listener[model.uri.toString()]; + const key = model.uri.toString(); + if (this._listener[key]) { + this._listener[key].dispose(); + delete this._listener[key]; + } }; this._disposables.push(monaco.editor.onDidCreateModel(onModelAdd));