diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index f10e9844d..ab937ca97 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -460,6 +460,12 @@ describe "DisplayBuffer", -> expect(changeHandler).toHaveBeenCalledWith(start: 3, end: 3, screenDelta: 1, bufferDelta: 1) + describe "when the change starts at the beginning of a fold but does not extend to the end (regression)", -> + it "preserves a proper mapping between buffer and screen coordinates", -> + expect(displayBuffer.screenPositionForBufferPosition([8, 0])).toEqual [4, 0] + buffer.setTextInRange([[2, 0], [3, 0]], "\n") + expect(displayBuffer.screenPositionForBufferPosition([8, 0])).toEqual [4, 0] + describe "position translation", -> it "translates positions to account for folded lines and characters and the placeholder", -> fold = displayBuffer.createFold(4, 7) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 49227c5a0..74ce5afb2 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -584,6 +584,7 @@ class DisplayBuffer extends Model updateScreenLines: (startBufferRow, endBufferRow, bufferDelta=0, options={}) -> startBufferRow = @rowMap.bufferRowRangeForBufferRow(startBufferRow)[0] + endBufferRow = @rowMap.bufferRowRangeForBufferRow(endBufferRow - 1)[1] startScreenRow = @rowMap.screenRowRangeForBufferRow(startBufferRow)[0] endScreenRow = @rowMap.screenRowRangeForBufferRow(endBufferRow - 1)[1]