@@ -21,11 +21,11 @@ class LanguageSelection extends Disposable implements ILanguageSelection {
2121 private readonly _onDidChange : Emitter < LanguageIdentifier > = this . _register ( new Emitter < LanguageIdentifier > ( ) ) ;
2222 public readonly onDidChange : Event < LanguageIdentifier > = this . _onDidChange . event ;
2323
24- constructor ( languagesRegistry : LanguagesRegistry , selector : ( ) => LanguageIdentifier ) {
24+ constructor ( onLanguagesMaybeChanged : Event < void > , selector : ( ) => LanguageIdentifier ) {
2525 super ( ) ;
2626 this . _selector = selector ;
2727 this . languageIdentifier = this . _selector ( ) ;
28- this . _register ( languagesRegistry . onDidChange ( ( ) => this . _evaluate ( ) ) ) ;
28+ this . _register ( onLanguagesMaybeChanged ( ( ) => this . _evaluate ( ) ) ) ;
2929 }
3030
3131 private _evaluate ( ) : void {
@@ -48,10 +48,14 @@ export class ModeServiceImpl implements IModeService {
4848 private readonly _onDidCreateMode : Emitter < IMode > = new Emitter < IMode > ( ) ;
4949 public readonly onDidCreateMode : Event < IMode > = this . _onDidCreateMode . event ;
5050
51+ protected readonly _onLanguagesMaybeChanged : Emitter < void > = new Emitter < void > ( ) ;
52+ private readonly onLanguagesMaybeChanged : Event < void > = this . _onLanguagesMaybeChanged . event ;
53+
5154 constructor ( warnOnOverwrite = false ) {
5255 this . _instantiatedModes = { } ;
5356
5457 this . _registry = new LanguagesRegistry ( true , warnOnOverwrite ) ;
58+ this . _registry . onDidChange ( ( ) => this . _onLanguagesMaybeChanged . fire ( ) ) ;
5559 }
5660
5761 protected _onReady ( ) : Promise < boolean > {
@@ -121,21 +125,21 @@ export class ModeServiceImpl implements IModeService {
121125 // --- instantiation
122126
123127 public create ( commaSeparatedMimetypesOrCommaSeparatedIds : string ) : ILanguageSelection {
124- return new LanguageSelection ( this . _registry , ( ) => {
128+ return new LanguageSelection ( this . onLanguagesMaybeChanged , ( ) => {
125129 const modeId = this . getModeId ( commaSeparatedMimetypesOrCommaSeparatedIds ) ;
126130 return this . _createModeAndGetLanguageIdentifier ( modeId ) ;
127131 } ) ;
128132 }
129133
130134 public createByLanguageName ( languageName : string ) : ILanguageSelection {
131- return new LanguageSelection ( this . _registry , ( ) => {
135+ return new LanguageSelection ( this . onLanguagesMaybeChanged , ( ) => {
132136 const modeId = this . _getModeIdByLanguageName ( languageName ) ;
133137 return this . _createModeAndGetLanguageIdentifier ( modeId ) ;
134138 } ) ;
135139 }
136140
137141 public createByFilepathOrFirstLine ( filepath : string , firstLine ?: string ) : ILanguageSelection {
138- return new LanguageSelection ( this . _registry , ( ) => {
142+ return new LanguageSelection ( this . onLanguagesMaybeChanged , ( ) => {
139143 const modeId = this . getModeIdByFilepathOrFirstLine ( filepath , firstLine ) ;
140144 return this . _createModeAndGetLanguageIdentifier ( modeId ) ;
141145 } ) ;
0 commit comments