Trigger an event when the extra libs changed, redoing all colorization and diagnostics

This commit is contained in:
placatus 2019-02-22 15:16:21 +02:00
parent e39fa719bc
commit 357f54c652
2 changed files with 12 additions and 3 deletions

View file

@ -134,14 +134,15 @@ export class DiagnostcsAdapter extends Adapter {
} }
} }
}); });
let redoDiagosticsCallback = () => {
this._disposables.push(this._defaults.onDidChange(() => {
// redo diagnostics when options change // redo diagnostics when options change
for (const model of monaco.editor.getModels()) { for (const model of monaco.editor.getModels()) {
onModelRemoved(model); onModelRemoved(model);
onModelAdd(model); onModelAdd(model);
} }
})); };
this._disposables.push(this._defaults.onDidChange(redoDiagosticsCallback));
this._disposables.push(this._defaults.onDidExtraLibsChange(redoDiagosticsCallback));
monaco.editor.getModels().forEach(onModelAdd); monaco.editor.getModels().forEach(onModelAdd);
} }

View file

@ -17,6 +17,8 @@ import IDisposable = monaco.IDisposable;
export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.LanguageServiceDefaults { export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.LanguageServiceDefaults {
private _onDidChange = new Emitter<monaco.languages.typescript.LanguageServiceDefaults>(); private _onDidChange = new Emitter<monaco.languages.typescript.LanguageServiceDefaults>();
private _onDidExtraLibsChange = new Emitter<monaco.languages.typescript.LanguageServiceDefaults>();
private _extraLibs: { [path: string]: { content: string, version: number } }; private _extraLibs: { [path: string]: { content: string, version: number } };
private _workerMaxIdleTime: number; private _workerMaxIdleTime: number;
private _eagerModelSync: boolean; private _eagerModelSync: boolean;
@ -37,6 +39,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.
return this._onDidChange.event; return this._onDidChange.event;
} }
get onDidExtraLibsChange(): IEvent<monaco.languages.typescript.LanguageServiceDefaults> {
return this._onDidExtraLibsChange.event;
}
getExtraLibs(): { [path: string]: string; } { getExtraLibs(): { [path: string]: string; } {
const result = Object.create(null); const result = Object.create(null);
for (var key in this._extraLibs) { for (var key in this._extraLibs) {
@ -84,6 +90,8 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.
} }
const client = await worker(""); const client = await worker("");
client.syncExtraLibs(this._extraLibs); client.syncExtraLibs(this._extraLibs);
// let all listeners know that the extra libs have changed
this._onDidExtraLibsChange.fire(this);
} catch (error) { } catch (error) {
console.error(error); console.error(error);
} }