@@ -1307,6 +1307,42 @@ describe('TreeSitterLanguageMode', () => {
1307
1307
` )
1308
1308
} )
1309
1309
1310
+ it ( 'updates fold locations when the buffer changes' , ( ) => {
1311
+ const grammar = new TreeSitterGrammar ( atom . grammars , jsGrammarPath , {
1312
+ parser : 'tree-sitter-javascript' ,
1313
+ folds : [
1314
+ {
1315
+ start : { type : '{' , index : 0 } ,
1316
+ end : { type : '}' , index : - 1 }
1317
+ }
1318
+ ]
1319
+ } )
1320
+
1321
+ buffer . setText ( dedent `
1322
+ class A {
1323
+ // a
1324
+ constructor (b) {
1325
+ this.b = b
1326
+ }
1327
+ }
1328
+ ` )
1329
+
1330
+ const languageMode = new TreeSitterLanguageMode ( { buffer, grammar} )
1331
+ buffer . setLanguageMode ( languageMode )
1332
+ expect ( languageMode . isFoldableAtRow ( 0 ) ) . toBe ( true )
1333
+ expect ( languageMode . isFoldableAtRow ( 1 ) ) . toBe ( false )
1334
+ expect ( languageMode . isFoldableAtRow ( 2 ) ) . toBe ( true )
1335
+ expect ( languageMode . isFoldableAtRow ( 3 ) ) . toBe ( false )
1336
+ expect ( languageMode . isFoldableAtRow ( 4 ) ) . toBe ( false )
1337
+
1338
+ buffer . insert ( [ 0 , 0 ] , '\n' )
1339
+ expect ( languageMode . isFoldableAtRow ( 0 ) ) . toBe ( false )
1340
+ expect ( languageMode . isFoldableAtRow ( 1 ) ) . toBe ( true )
1341
+ expect ( languageMode . isFoldableAtRow ( 2 ) ) . toBe ( false )
1342
+ expect ( languageMode . isFoldableAtRow ( 3 ) ) . toBe ( true )
1343
+ expect ( languageMode . isFoldableAtRow ( 4 ) ) . toBe ( false )
1344
+ } )
1345
+
1310
1346
describe ( 'when folding a node that ends with a line break' , ( ) => {
1311
1347
it ( 'ends the fold at the end of the previous line' , async ( ) => {
1312
1348
const grammar = new TreeSitterGrammar ( atom . grammars , pythonGrammarPath , {
0 commit comments