diff --git a/spec/text-editor-component-spec.js b/spec/text-editor-component-spec.js index ef65a5738..bd03863ef 100644 --- a/spec/text-editor-component-spec.js +++ b/spec/text-editor-component-spec.js @@ -195,6 +195,21 @@ describe('TextEditorComponent', () => { expect(lineNodeForScreenRow(component, 7)).toBe(lineNode) }) + it('updates lines numbers when a row\'s foldability changes (regression)', async () => { + const {component, element, editor} = buildComponent({text: 'abc\n'}) + editor.setCursorBufferPosition([1, 0]) + await component.getNextUpdatePromise() + expect(lineNumberNodeForScreenRow(component, 0).querySelector('.foldable')).toBeNull() + + editor.insertText(' def') + await component.getNextUpdatePromise() + expect(lineNumberNodeForScreenRow(component, 0).querySelector('.foldable')).toBeDefined() + + editor.undo() + await component.getNextUpdatePromise() + expect(lineNumberNodeForScreenRow(component, 0).querySelector('.foldable')).toBeNull() + }) + it('renders dummy vertical and horizontal scrollbars when content overflows', async () => { const {component, element, editor} = buildComponent({height: 100, width: 100}) const verticalScrollbar = component.refs.verticalScrollbar.element diff --git a/src/text-editor-component.js b/src/text-editor-component.js index f0e90e767..aeead049c 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -823,11 +823,10 @@ class TextEditorComponent { const endRow = this.getRenderedEndRow() const renderedRowCount = this.getRenderedRowCount() - const {keys, softWrappedFlags, foldableFlags} = this.lineNumbersToRender const bufferRows = model.bufferRowsForScreenRows(startRow, endRow - 1) - this.lineNumbersToRender.bufferRows = bufferRows - keys.length = renderedRowCount - foldableFlags.length = renderedRowCount + const keys = new Array(endRow - startRow) + const foldableFlags = new Array(endRow - startRow) + const softWrappedFlags = new Array(endRow - startRow) let previousBufferRow = (startRow > 0) ? model.bufferRowForScreenRow(startRow - 1) : -1 let softWrapCount = 0 @@ -847,6 +846,11 @@ class TextEditorComponent { } previousBufferRow = bufferRow } + + this.lineNumbersToRender.bufferRows = bufferRows + this.lineNumbersToRender.keys = keys + this.lineNumbersToRender.foldableFlags = foldableFlags + this.lineNumbersToRender.softWrappedFlags = softWrappedFlags } queryMaxLineNumberDigits () {