Merge pull request #112 from Tyriar/111_scroll_with_blank_lines_after_cursor

Improve scroll to work with blank lines after the cursor
This commit is contained in:
Paris Kasidiaris
2016-06-10 11:40:08 +03:00
committed by GitHub
+21 -5
View File
@@ -2607,7 +2607,8 @@
, el
, i
, j
, ch;
, ch
, addToY;
if (x === this.cols && y === this.rows) {
return;
@@ -2639,11 +2640,23 @@
// resize rows
j = this.rows;
addToY = 0;
if (j < y) {
el = this.element;
while (j++ < y) {
// y is rows, not this.y
if (this.lines.length < y + this.ybase) {
this.lines.push(this.blankLine());
if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) {
// There is room above the buffer and there are no empty elements below the line,
// scroll up
this.ybase--;
this.ydisp--;
addToY++
} else {
// Add a blank line if there is no buffer left at the top to scroll to, or if there
// are blank lines after the cursor
this.lines.push(this.blankLine());
}
}
if (this.children.length < y) {
this.insertRow();
@@ -2652,11 +2665,11 @@
} else { // (j > y)
while (j-- > y) {
if (this.lines.length > y + this.ybase) {
if (this.y + this.ybase < j) {
// The line is after the cursor, remove it
if (this.lines.length > this.ybase + this.y + 1) {
// The line is a blank line below the cursor, remove it
this.lines.pop();
} else {
// The line is the cursor, push the viewport down
// The line is the cursor, scroll down
this.ybase++;
this.ydisp++;
}
@@ -2676,6 +2689,9 @@
if (this.y >= y) {
this.y = y - 1;
}
if (addToY) {
this.y += addToY;
}
if (this.x >= x) {
this.x = x - 1;