src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.ts/LanguageConfigurationFileHandler/constructor
class LanguageConfigurationFileHandler:	constructor(
		@ITextMateService textMateService: ITextMateService,
		@ILanguageService private readonly _languageService: ILanguageService,
		@IExtensionResourceLoaderService private readonly _extensionResourceLoaderService: IExtensionResourceLoaderService,
		@IExtensionService private readonly _extensionService: IExtensionService,
		@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,
	) {
		super();

		this._register(this._languageService.onDidEncounterLanguage(async (languageIdentifier) => {
			// Modes can be instantiated before the extension points have finished registering
			this._extensionService.whenInstalledExtensionsRegistered().then(() => {
				this._loadConfigurationsForMode(languageIdentifier);
			});
		}));
		this._register(this._languageService.onDidChange(() => {
			// reload language configurations as necessary
			for (const [languageId] of this._done) {
				this._loadConfigurationsForMode(languageId);
			}
		}));
		this._register(textMateService.onDidEncounterLanguage((languageId) => {
			this._loadConfigurationsForMode(languageId);
		}));
	}