From 418157fe996c3a1d8f06369150a00931c6b637f0 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 30 Apr 2018 16:07:30 +0200 Subject: [PATCH] update markers on settings change --- src/htmlMode.ts | 3 ++- src/languageFeatures.ts | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/htmlMode.ts b/src/htmlMode.ts index 9e179029..380bd3e8 100644 --- a/src/htmlMode.ts +++ b/src/htmlMode.ts @@ -31,6 +31,7 @@ export function setupMode(defaults: LanguageServiceDefaultsImpl): void { if (languageId === 'html') { monaco.languages.registerDocumentFormattingEditProvider(languageId, new languageFeatures.DocumentFormattingEditProvider(worker)); monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new languageFeatures.DocumentRangeFormattingEditProvider(worker)); - new languageFeatures.DiagnostcsAdapter(languageId, worker); + new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults); } + } diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 44d734b5..1a981802 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -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) { @@ -64,6 +64,15 @@ export class DiagnostcsAdapter { onModelAdd(event.model); })); + this._disposables.push(defaults.onDidChange(_ => { + monaco.editor.getModels().forEach(model => { + if (model.getModeId() === this._languageId) { + onModelRemoved(model); + onModelAdd(model); + } + }); + })); + this._disposables.push({ dispose: () => { for (let key in this._listener) {