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