@@ -64,7 +64,7 @@ export class FoldingModel {
6464 let k = 0 ; // index from [0 ... this.regions.length]
6565 let dirtyRegionEndLine = - 1 ; // end of the range where decorations need to be updated
6666 let lastHiddenLine = - 1 ; // the end of the last hidden lines
67- let isNewLineNeededAtEnd : boolean = false ;
67+ let isNewlineNeededAtEnd : boolean = false ;
6868 const updateDecorationsUntil = ( index : number ) => {
6969 while ( k < index ) {
7070 const endLineNumber = this . _regions . getEndLineNumber ( k ) ;
@@ -92,34 +92,31 @@ export class FoldingModel {
9292
9393 dirtyRegionEndLine = Math . max ( dirtyRegionEndLine , this . _regions . getEndLineNumber ( index ) ) ;
9494
95- // If isNewLineNeededAtEnd is already true, we can skip this check
96- if ( ! isNewLineNeededAtEnd && this . editor . getOption ( EditorOption . foldingAddNewlineAtEnd ) && newCollapseState && dirtyRegionEndLine === this . _textModel . getLineCount ( ) ) {
97- isNewLineNeededAtEnd = true ;
95+ // If isNewlineNeededAtEnd is already true, we can skip this check
96+ if ( ! isNewlineNeededAtEnd && this . editor . getOption ( EditorOption . foldingAddNewlineAtEnd ) && newCollapseState && dirtyRegionEndLine === this . _textModel . getLineCount ( ) ) {
97+ const lastLineContent = this . _textModel . getLineContent ( dirtyRegionEndLine ) ;
98+ // Only insert a newline if the last line is not already empty
99+ if ( lastLineContent . trim ( ) . length > 0 ) {
100+ this . _textModel . pushEditOperations (
101+ null ,
102+ [ {
103+ range : {
104+ startLineNumber : dirtyRegionEndLine ,
105+ startColumn : lastLineContent . length + 1 ,
106+ endLineNumber : dirtyRegionEndLine ,
107+ endColumn : lastLineContent . length + 1 ,
108+ } ,
109+ text : this . _textModel . getEOL ( ) ,
110+ forceMoveMarkers : true
111+ } ] ,
112+ ( ) => null
113+ ) ;
114+ }
98115 }
116+ isNewlineNeededAtEnd = true ;
99117 }
100118 }
101119
102- if ( isNewLineNeededAtEnd ) {
103- const lastLineContent = this . _textModel . getLineContent ( dirtyRegionEndLine ) ;
104-
105- // Only insert if the line isn't already empty
106- if ( lastLineContent . trim ( ) . length > 0 ) {
107- this . _textModel . pushEditOperations (
108- null ,
109- [ {
110- range : {
111- startLineNumber : dirtyRegionEndLine ,
112- startColumn : lastLineContent . length + 1 ,
113- endLineNumber : dirtyRegionEndLine ,
114- endColumn : lastLineContent . length + 1 ,
115- } ,
116- text : this . _textModel . getEOL ( ) ,
117- forceMoveMarkers : true
118- } ] ,
119- ( ) => null
120- ) ;
121- }
122- }
123120
124121 updateDecorationsUntil ( this . _regions . length ) ;
125122 } ) ;
0 commit comments