Преглед изворни кода

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

Martin Aeschlimann пре 7 година
родитељ
комит
e9046ef4a9
2 измењених фајлова са 16 додато и 19 уклоњено
  1. 5 9
      src/jsonMode.ts
  2. 11 10
      src/languageFeatures.ts

+ 5 - 9
src/jsonMode.ts

@@ -4,11 +4,11 @@
  *--------------------------------------------------------------------------------------------*/
 'use strict';
 
-import {WorkerManager} from './workerManager';
-import {JSONWorker} from './jsonWorker';
-import {LanguageServiceDefaultsImpl} from './monaco.contribution';
+import { WorkerManager } from './workerManager';
+import { JSONWorker } from './jsonWorker';
+import { LanguageServiceDefaultsImpl } from './monaco.contribution';
 import * as languageFeatures from './languageFeatures';
-import {createTokenizationSupport} from './tokenization';
+import { createTokenizationSupport } from './tokenization';
 
 import Promise = monaco.Promise;
 import Uri = monaco.Uri;
@@ -27,16 +27,12 @@ export function setupMode(defaults: LanguageServiceDefaultsImpl): void {
 
 	let languageId = defaults.languageId;
 
-	let diagnostcsAdapter = new languageFeatures.DiagnostcsAdapter(languageId, worker);
-	defaults.onDidChange(c => diagnostcsAdapter.clearMarkers());
-
-
 	disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
 	disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
 	disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
 	disposables.push(monaco.languages.registerDocumentFormattingEditProvider(languageId, new languageFeatures.DocumentFormattingEditProvider(worker)));
 	disposables.push(monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new languageFeatures.DocumentRangeFormattingEditProvider(worker)));
-	disposables.push(diagnostcsAdapter);
+	disposables.push(new languageFeatures.DiagnosticsAdapter(languageId, worker, defaults));
 	disposables.push(monaco.languages.setTokensProvider(languageId, createTokenizationSupport(true)));
 	disposables.push(monaco.languages.setLanguageConfiguration(languageId, richEditConfiguration));
 }

+ 11 - 10
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) {
@@ -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());