diff --git a/spec/text-editor-component-spec.js b/spec/text-editor-component-spec.js index 83246ae91..54a7e327a 100644 --- a/spec/text-editor-component-spec.js +++ b/spec/text-editor-component-spec.js @@ -685,6 +685,20 @@ describe('TextEditorComponent', () => { ]) } + editor.getBuffer().insert([2, 0], '\n') + await component.getNextUpdatePromise() + { + const bufferRows = Array.from(element.querySelectorAll('.line-number:not(.dummy)')).map((e) => e.dataset.bufferRow) + const screenRows = Array.from(element.querySelectorAll('.line-number:not(.dummy)')).map((e) => e.dataset.screenRow) + expect(bufferRows).toEqual([ + '0', '1', '2', '3', '4', '4', '5', '6', '7', '7', + '7', '8', '9', '9', '9', '10', '11', '12', '12', '13' + ]) + expect(screenRows).toEqual([ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19' + ]) + } }) it('does not blow away class names added to the element by packages when changing the class name', async () => { diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 641585348..8599c5b49 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -3167,8 +3167,10 @@ class LineNumberComponent { } update (props) { - const {nodePool, className, width, marginTop, number} = props + const {nodePool, className, width, marginTop, bufferRow, screenRow, number} = props + if (this.props.bufferRow !== bufferRow) this.element.dataset.bufferRow = bufferRow + if (this.props.screenRow !== screenRow) this.element.dataset.screenRow = screenRow if (this.props.className !== className) this.element.className = className if (this.props.width !== width) this.element.style.width = width + 'px' if (this.props.marginTop !== marginTop) {