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 {
}
}
});
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);
}

View file

@ -17,6 +17,8 @@ import IDisposable = monaco.IDisposable;
export class LanguageServiceDefaultsImpl implements 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 _workerMaxIdleTime: number;
private _eagerModelSync: boolean;
@ -37,6 +39,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.
return this._onDidChange.event;
}
get onDidExtraLibsChange(): IEvent<monaco.languages.typescript.LanguageServiceDefaults> {
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);
}