diff --git a/src/common/buffer/BufferRange.test.ts b/src/common/buffer/BufferRange.test.ts index d0f287dc..69aacd99 100644 --- a/src/common/buffer/BufferRange.test.ts +++ b/src/common/buffer/BufferRange.test.ts @@ -16,10 +16,10 @@ describe('BufferRange', () => { assert.throws(() => getRangeLength(createRange(1, 3, 1, 1), 0)); }); it('should get range multiple lines', () => { - assert.equal(getRangeLength(createRange(1, 1, 4, 5), 5), 23); + assert.equal(getRangeLength(createRange(1, 1, 4, 5), 5), 24); }); it('should get range for end line right after start line', () => { - assert.equal(getRangeLength(createRange(1, 1, 7, 2), 5), 11); + assert.equal(getRangeLength(createRange(1, 1, 7, 2), 5), 12); }); }); }); diff --git a/src/common/buffer/BufferRange.ts b/src/common/buffer/BufferRange.ts index 9091c68d..a49cf481 100644 --- a/src/common/buffer/BufferRange.ts +++ b/src/common/buffer/BufferRange.ts @@ -5,12 +5,9 @@ import { IBufferRange } from 'xterm'; -export function getRangeLength(range: IBufferRange, cols: number): number { - if (range.start.y === range.end.y) { - return range.end.x - range.start.x + 1; - } +export function getRangeLength(range: IBufferRange, bufferCols: number): number { if (range.start.y > range.end.y) { throw new Error(`Buffer range end (${range.end.x}, ${range.end.y}) cannot be before start (${range.start.x}, ${range.start.y})`); } - return cols * (range.end.y - range.start.y - 1) + cols - range.start.x + range.end.x; + return bufferCols * (range.end.y - range.start.y) + (range.end.x - range.start.x + 1); }