update markers on settings change (for Microsoft/monaco-editor#755

This commit is contained in:
Martin Aeschlimann 2018-04-30 14:55:38 +02:00
parent fe637537e0
commit e9046ef4a9
2 changed files with 16 additions and 19 deletions

View file

@ -24,12 +24,12 @@ export interface WorkerAccessor {
// --- diagnostics --- ---
export class DiagnostcsAdapter {
export class DiagnosticsAdapter {
private _disposables: IDisposable[] = [];
private _listener: { [uri: string]: IDisposable } = Object.create(null);
constructor(private _languageId: string, private _worker: WorkerAccessor) {
constructor(private _languageId: string, private _worker: WorkerAccessor, defaults: LanguageServiceDefaultsImpl) {
const onModelAdd = (model: monaco.editor.IModel): void => {
let modeId = model.getModeId();
if (modeId !== this._languageId) {
@ -66,6 +66,15 @@ export class DiagnostcsAdapter {
this._resetSchema(event.model.uri);
}));
defaults.onDidChange(_ => {
monaco.editor.getModels().forEach(model => {
if (model.getModeId() === this._languageId) {
onModelRemoved(model);
onModelAdd(model);;
}
});
});
this._disposables.push({
dispose: () => {
monaco.editor.getModels().forEach(onModelRemoved);
@ -83,14 +92,6 @@ export class DiagnostcsAdapter {
this._disposables = [];
}
public clearMarkers() {
monaco.editor.getModels().forEach(model => {
if (model.getModeId() === this._languageId) {
monaco.editor.setModelMarkers(model, this._languageId, []);
}
});
}
private _resetSchema(resource: Uri): void {
this._worker().then(worker => {
worker.resetSchema(resource.toString());