From c0250bfca3cbb3ba2bb80085d2525a4de6e29034 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 30 Apr 2018 14:35:24 +0200 Subject: [PATCH] remove markers on settings change. Fixes Microsoft/monaco-editor#840 --- src/cssMode.ts | 2 +- src/languageFeatures.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/cssMode.ts b/src/cssMode.ts index e8bce90b..ebd12c77 100644 --- a/src/cssMode.ts +++ b/src/cssMode.ts @@ -30,7 +30,7 @@ export function setupMode(defaults: LanguageServiceDefaultsImpl): void { monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)); monaco.languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker)); monaco.languages.registerColorProvider(languageId, new languageFeatures.DocumentColorAdapter(worker)); - new languageFeatures.DiagnostcsAdapter(languageId, worker); + new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults); } diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 8d363a70..5d7d904a 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -25,12 +25,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); })); + 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) {