Merge pull request #3363 from meganrogge/bufferRange

+1 to rangeLength when on a wrapped line to match standard behavior
This commit is contained in:
Daniel Imms
2021-06-09 06:17:59 -07:00
committed by GitHub
2 changed files with 4 additions and 7 deletions
+2 -2
View File
@@ -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);
});
});
});
+2 -5
View File
@@ -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);
}