diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 46248592..c8dd261b 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -134,14 +134,15 @@ export class DiagnostcsAdapter extends Adapter { } } }); - - this._disposables.push(this._defaults.onDidChange(() => { + let redoDiagosticsCallback = () => { // redo diagnostics when options change for (const model of monaco.editor.getModels()) { onModelRemoved(model); onModelAdd(model); } - })); + }; + this._disposables.push(this._defaults.onDidChange(redoDiagosticsCallback)); + this._disposables.push(this._defaults.onDidExtraLibsChange(redoDiagosticsCallback)); monaco.editor.getModels().forEach(onModelAdd); } diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 6ef44379..67318e89 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -17,6 +17,8 @@ import IDisposable = monaco.IDisposable; export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.LanguageServiceDefaults { private _onDidChange = new Emitter(); + private _onDidExtraLibsChange = new Emitter(); + private _extraLibs: { [path: string]: { content: string, version: number } }; private _workerMaxIdleTime: number; private _eagerModelSync: boolean; @@ -37,6 +39,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript. return this._onDidChange.event; } + get onDidExtraLibsChange(): IEvent { + return this._onDidExtraLibsChange.event; + } + getExtraLibs(): { [path: string]: string; } { const result = Object.create(null); for (var key in this._extraLibs) { @@ -84,6 +90,8 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript. } const client = await worker(""); client.syncExtraLibs(this._extraLibs); + // let all listeners know that the extra libs have changed + this._onDidExtraLibsChange.fire(this); } catch (error) { console.error(error); }