@@ -2344,13 +2344,18 @@ export class TextModel extends Disposable implements model.ITextModel {
23442344 public findEnclosingBrackets ( _position : IPosition ) : [ Range , Range ] | null {
23452345 const position = this . validatePosition ( _position ) ;
23462346 const lineCount = this . getLineCount ( ) ;
2347+ const savedCounts = new Map < number , number [ ] > ( ) ;
23472348
23482349 let counts : number [ ] = [ ] ;
2349- const resetCounts = ( modeBrackets : RichEditBrackets | null ) => {
2350- counts = [ ] ;
2351- for ( let i = 0 , len = modeBrackets ? modeBrackets . brackets . length : 0 ; i < len ; i ++ ) {
2352- counts [ i ] = 0 ;
2350+ const resetCounts = ( languageId : number , modeBrackets : RichEditBrackets | null ) => {
2351+ if ( ! savedCounts . has ( languageId ) ) {
2352+ let tmp = [ ] ;
2353+ for ( let i = 0 , len = modeBrackets ? modeBrackets . brackets . length : 0 ; i < len ; i ++ ) {
2354+ tmp [ i ] = 0 ;
2355+ }
2356+ savedCounts . set ( languageId , tmp ) ;
23532357 }
2358+ counts = savedCounts . get ( languageId ) ! ;
23542359 } ;
23552360 const searchInRange = ( modeBrackets : RichEditBrackets , lineNumber : number , lineText : string , searchStartOffset : number , searchEndOffset : number ) : [ Range , Range ] | null => {
23562361 while ( true ) {
@@ -2396,7 +2401,7 @@ export class TextModel extends Disposable implements model.ITextModel {
23962401 if ( languageId !== tokenLanguageId ) {
23972402 languageId = tokenLanguageId ;
23982403 modeBrackets = LanguageConfigurationRegistry . getBracketsSupport ( languageId ) ;
2399- resetCounts ( modeBrackets ) ;
2404+ resetCounts ( languageId , modeBrackets ) ;
24002405 }
24012406 }
24022407
@@ -2415,7 +2420,7 @@ export class TextModel extends Disposable implements model.ITextModel {
24152420 }
24162421 languageId = tokenLanguageId ;
24172422 modeBrackets = LanguageConfigurationRegistry . getBracketsSupport ( languageId ) ;
2418- resetCounts ( modeBrackets ) ;
2423+ resetCounts ( languageId , modeBrackets ) ;
24192424 }
24202425
24212426 const searchInToken = ( ! ! modeBrackets && ! ignoreBracketsInToken ( lineTokens . getStandardTokenType ( tokenIndex ) ) ) ;
0 commit comments