@@ -92,8 +92,8 @@ export class LanguagesRegistry extends Disposable {
9292
9393 if ( useModesRegistry ) {
9494 this . _initializeFromRegistry ( ) ;
95- this . _register ( ModesRegistry . onDidChangeLanguages ( ( lang ) => {
96- this . _registerLanguage ( lang ) ;
95+ this . _register ( ModesRegistry . onDidChangeLanguages ( ( m ) => {
96+ this . _initializeFromRegistry ( ) ;
9797 } ) ) ;
9898 }
9999 }
@@ -105,7 +105,7 @@ export class LanguagesRegistry extends Disposable {
105105
106106 public setDynamicLanguages ( def : ILanguageExtensionPoint [ ] ) : void {
107107 this . _dynamicLanguages = def ;
108- this . _registerLanguages ( this . _dynamicLanguages ) ;
108+ this . _initializeFromRegistry ( ) ;
109109 }
110110
111111 private _initializeFromRegistry ( ) : void {
@@ -115,24 +115,45 @@ export class LanguagesRegistry extends Disposable {
115115 this . _lowercaseNameMap = { } ;
116116
117117 clearPlatformLanguageAssociations ( ) ;
118+ const desc = ( < ILanguageExtensionPoint [ ] > [ ] ) . concat ( ModesRegistry . getLanguages ( ) ) . concat ( this . _dynamicLanguages ) ;
119+ this . _registerLanguages ( desc ) ;
118120 }
119121
120122 registerLanguage ( desc : ILanguageExtensionPoint ) : IDisposable {
121123 return ModesRegistry . registerLanguage ( desc ) ;
122124 }
123125
124126 _registerLanguages ( desc : ILanguageExtensionPoint [ ] ) : void {
127+
125128 for ( const d of desc ) {
126129 this . _registerLanguage ( d ) ;
127130 }
128131
132+ // Rebuild fast path maps
133+ this . _mimeTypesMap = { } ;
134+ this . _nameMap = { } ;
135+ this . _lowercaseNameMap = { } ;
136+ Object . keys ( this . _languages ) . forEach ( ( langId ) => {
137+ const language = this . _languages [ langId ] ;
138+ if ( language . name ) {
139+ this . _nameMap [ language . name ] = language . identifier ;
140+ }
141+ language . aliases . forEach ( ( alias ) => {
142+ this . _lowercaseNameMap [ alias . toLowerCase ( ) ] = language . identifier ;
143+ } ) ;
144+ language . mimetypes . forEach ( ( mimetype ) => {
145+ this . _mimeTypesMap [ mimetype ] = language . identifier ;
146+ } ) ;
147+ } ) ;
148+
129149 Registry . as < IConfigurationRegistry > ( Extensions . Configuration ) . registerOverrideIdentifiers ( this . getRegisteredLanguageIds ( ) ) ;
130150
131151 this . _onDidChange . fire ( ) ;
132152 }
133153
134154 private _registerLanguage ( lang : ILanguageExtensionPoint ) : void {
135155 const langId = lang . id ;
156+
136157 let resolvedLanguage : IResolvedLanguage ;
137158 if ( hasOwnProperty . call ( this . _languages , langId ) ) {
138159 resolvedLanguage = this . _languages [ langId ] ;
@@ -152,16 +173,6 @@ export class LanguagesRegistry extends Disposable {
152173 }
153174
154175 this . _mergeLanguage ( resolvedLanguage , lang ) ;
155- // Rebuild fast path maps
156- if ( resolvedLanguage . name ) {
157- this . _nameMap [ resolvedLanguage . name ] = resolvedLanguage . identifier ;
158- }
159- resolvedLanguage . aliases . forEach ( ( alias ) => {
160- this . _lowercaseNameMap [ alias . toLowerCase ( ) ] = resolvedLanguage . identifier ;
161- } ) ;
162- resolvedLanguage . mimetypes . forEach ( ( mimetype ) => {
163- this . _mimeTypesMap [ mimetype ] = resolvedLanguage . identifier ;
164- } ) ;
165176 }
166177
167178 private _mergeLanguage ( resolvedLanguage : IResolvedLanguage , lang : ILanguageExtensionPoint ) : void {
0 commit comments