diff --git a/package.json b/package.json index 8160436f9..cf9d08db9 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "service-hub": "^0.7.4", "sinon": "1.17.4", "temp": "^0.8.3", - "text-buffer": "13.7.2", + "text-buffer": "13.8.0-display-layer-change-event-2", "typescript-simple": "1.0.0", "underscore-plus": "^1.6.6", "winreg": "^1.2.1", diff --git a/src/text-editor-component.js b/src/text-editor-component.js index f19b7e31c..b67b45f83 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -2456,8 +2456,12 @@ class TextEditorComponent { didChangeDisplayLayer (changes) { for (let i = 0; i < changes.length; i++) { - const {start, oldExtent, newExtent} = changes[i] - this.spliceLineTopIndex(start.row, oldExtent.row, newExtent.row) + const {oldRange, newRange} = changes[i] + this.spliceLineTopIndex( + newRange.start.row, + oldRange.end.row - oldRange.start.row, + newRange.end.row - newRange.start.row + ) } this.scheduleUpdate() diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 79e00e31a..3bc5fa34e 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -468,10 +468,10 @@ class TextEditor extends Model subscribeToDisplayLayer: -> @disposables.add @tokenizedBuffer.onDidChangeGrammar @handleGrammarChange.bind(this) - @disposables.add @displayLayer.onDidChangeSync (e) => + @disposables.add @displayLayer.onDidChange (changes) => @mergeIntersectingSelections() - @component?.didChangeDisplayLayer(e) - @emitter.emit 'did-change', e + @component?.didChangeDisplayLayer(changes) + @emitter.emit 'did-change', changes.map (change) -> new ChangeEvent(change) @disposables.add @displayLayer.onDidReset => @mergeIntersectingSelections() @component?.didResetDisplayLayer() @@ -3911,3 +3911,18 @@ class TextEditor extends Model endRow++ new Range(new Point(startRow, 0), new Point(endRow, @buffer.lineLengthForRow(endRow))) + +class ChangeEvent + constructor: ({@oldRange, @newRange}) -> + + Object.defineProperty @prototype, 'start', { + get: -> @oldRange.start + } + + Object.defineProperty @prototype, 'oldExtent', { + get: -> @oldRange.getExtent() + } + + Object.defineProperty @prototype, 'newExtent', { + get: -> @newRange.getExtent() + }