Skip to content

Commit c223524

Browse files
committed
respect DECSTBM
1 parent 2a46f5f commit c223524

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

src/InputHandler.ts

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,10 +1064,14 @@ export class InputHandler extends Disposable implements IInputHandler {
10641064
* - always left shift (no line orientation setting respected)
10651065
*/
10661066
public scrollLeft(params: IParams): void {
1067+
const buffer = this._bufferService.buffer;
1068+
if (buffer.y > buffer.scrollBottom || buffer.y < buffer.scrollTop) {
1069+
return;
1070+
}
10671071
const param = params.params[0] || 1;
1068-
for (let y = 0; y < this._bufferService.rows; ++y) {
1069-
const line = this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase + y);
1070-
line.deleteCells(0, param, this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));
1072+
for (let y = buffer.scrollTop; y <= buffer.scrollBottom; ++y) {
1073+
const line = buffer.lines.get(buffer.ybase + y);
1074+
line.deleteCells(0, param, buffer.getNullCell(this._terminal.eraseAttrData()));
10711075
line.isWrapped = false;
10721076
}
10731077
}
@@ -1087,10 +1091,14 @@ export class InputHandler extends Disposable implements IInputHandler {
10871091
* - always right shift (no line orientation setting respected)
10881092
*/
10891093
public scrollRight(params: IParams): void {
1094+
const buffer = this._bufferService.buffer;
1095+
if (buffer.y > buffer.scrollBottom || buffer.y < buffer.scrollTop) {
1096+
return;
1097+
}
10901098
const param = params.params[0] || 1;
1091-
for (let y = 0; y < this._bufferService.rows; ++y) {
1092-
const line = this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase + y);
1093-
line.insertCells(0, param, this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));
1099+
for (let y = buffer.scrollTop; y <= buffer.scrollBottom; ++y) {
1100+
const line = buffer.lines.get(buffer.ybase + y);
1101+
line.insertCells(0, param, buffer.getNullCell(this._terminal.eraseAttrData()));
10941102
line.isWrapped = false;
10951103
}
10961104
}
@@ -1100,10 +1108,14 @@ export class InputHandler extends Disposable implements IInputHandler {
11001108
* Insert Ps Column(s) (default = 1) (DECIC), VT420 and up.
11011109
*/
11021110
public insertColumns(params: IParams): void {
1111+
const buffer = this._bufferService.buffer;
1112+
if (buffer.y > buffer.scrollBottom || buffer.y < buffer.scrollTop) {
1113+
return;
1114+
}
11031115
const param = params.params[0] || 1;
1104-
for (let y = 0; y < this._bufferService.rows; ++y) {
1105-
const line = this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase + y);
1106-
line.insertCells(this._bufferService.buffer.x, param, this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));
1116+
for (let y = buffer.scrollTop; y <= buffer.scrollBottom; ++y) {
1117+
const line = this._bufferService.buffer.lines.get(buffer.ybase + y);
1118+
line.insertCells(buffer.x, param, buffer.getNullCell(this._terminal.eraseAttrData()));
11071119
line.isWrapped = false;
11081120
}
11091121
}
@@ -1113,10 +1125,14 @@ export class InputHandler extends Disposable implements IInputHandler {
11131125
* Delete Ps Column(s) (default = 1) (DECDC), VT420 and up.
11141126
*/
11151127
public deleteColumns(params: IParams): void {
1128+
const buffer = this._bufferService.buffer;
1129+
if (buffer.y > buffer.scrollBottom || buffer.y < buffer.scrollTop) {
1130+
return;
1131+
}
11161132
const param = params.params[0] || 1;
1117-
for (let y = 0; y < this._bufferService.rows; ++y) {
1118-
const line = this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase + y);
1119-
line.deleteCells(this._bufferService.buffer.x, param, this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));
1133+
for (let y = buffer.scrollTop; y <= buffer.scrollBottom; ++y) {
1134+
const line = buffer.lines.get(buffer.ybase + y);
1135+
line.deleteCells(buffer.x, param, buffer.getNullCell(this._terminal.eraseAttrData()));
11201136
line.isWrapped = false;
11211137
}
11221138
}

0 commit comments

Comments
 (0)