Explorar el Código

Trigger an event when the extra libs changed, redoing all colorization and diagnostics

placatus hace 6 años
padre
commit
357f54c652
Se han modificado 2 ficheros con 12 adiciones y 3 borrados
  1. 4 3
      src/languageFeatures.ts
  2. 8 0
      src/monaco.contribution.ts

+ 4 - 3
src/languageFeatures.ts

@@ -134,14 +134,15 @@ export class DiagnostcsAdapter extends Adapter {
 				}
 			}
 		});
-
-		this._disposables.push(this._defaults.onDidChange(() => {
+		let redoDiagosticsCallback = () => {
 			// redo diagnostics when options change
 			for (const model of monaco.editor.getModels()) {
 				onModelRemoved(model);
 				onModelAdd(model);
 			}
-		}));
+		};
+		this._disposables.push(this._defaults.onDidChange(redoDiagosticsCallback));
+		this._disposables.push(this._defaults.onDidExtraLibsChange(redoDiagosticsCallback));
 
 		monaco.editor.getModels().forEach(onModelAdd);
 	}

+ 8 - 0
src/monaco.contribution.ts

@@ -17,6 +17,8 @@ import IDisposable = monaco.IDisposable;
 export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.LanguageServiceDefaults {
 
 	private _onDidChange = new Emitter<monaco.languages.typescript.LanguageServiceDefaults>();
+	private _onDidExtraLibsChange = new Emitter<monaco.languages.typescript.LanguageServiceDefaults>();
+
 	private _extraLibs: { [path: string]: { content: string, version: number } };
 	private _workerMaxIdleTime: number;
 	private _eagerModelSync: boolean;
@@ -37,6 +39,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.
 		return this._onDidChange.event;
 	}
 
+	get onDidExtraLibsChange(): IEvent<monaco.languages.typescript.LanguageServiceDefaults> {
+		return this._onDidExtraLibsChange.event;
+	}
+
 	getExtraLibs(): { [path: string]: string; } {
 		const result = Object.create(null);
 		for (var key in this._extraLibs) {
@@ -84,6 +90,8 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.typescript.
 			}
 			const client = await worker("");
 			client.syncExtraLibs(this._extraLibs);
+			// let all listeners know that the extra libs have changed
+			this._onDidExtraLibsChange.fire(this);
 		} catch (error) {
 			console.error(error);
 		}