Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3d35fcea9 | ||
|
|
b1ecd216f2 | ||
|
|
ade9a5a091 |
@@ -475,6 +475,13 @@ describe('InputHandler', () => {
|
|||||||
inputHandler.eraseInLine(Params.fromArray([1]));
|
inputHandler.eraseInLine(Params.fromArray([1]));
|
||||||
assert.equal(bufferService.buffer.lines.get(2)!.isWrapped, true);
|
assert.equal(bufferService.buffer.lines.get(2)!.isWrapped, true);
|
||||||
|
|
||||||
|
// params[1] - full line erase at last column clears wrap on next line
|
||||||
|
await resetToBaseState();
|
||||||
|
bufferService.buffer.y = 1;
|
||||||
|
bufferService.buffer.x = bufferService.cols - 1;
|
||||||
|
inputHandler.eraseInLine(Params.fromArray([1]));
|
||||||
|
assert.equal(bufferService.buffer.lines.get(2)!.isWrapped, false);
|
||||||
|
|
||||||
// params[2] - erase complete line
|
// params[2] - erase complete line
|
||||||
await resetToBaseState();
|
await resetToBaseState();
|
||||||
bufferService.buffer.y = 2;
|
bufferService.buffer.y = 2;
|
||||||
|
|||||||
@@ -1202,6 +1202,21 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scroll-margin column operations clear isWrapped on lines inside the margins.
|
||||||
|
* Also clear the line below the bottom margin when it still continues a wrap chain.
|
||||||
|
*/
|
||||||
|
private _clearWrapBelowScrollMargins(): void {
|
||||||
|
const rowBelowMargin = this._activeBuffer.scrollBottom + 1;
|
||||||
|
if (rowBelowMargin >= this._bufferService.rows) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const lineBelow = this._activeBuffer.lines.get(this._activeBuffer.ybase + rowBelowMargin);
|
||||||
|
if (lineBelow) {
|
||||||
|
lineBelow.isWrapped = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CSI Ps J Erase in Display (ED).
|
* CSI Ps J Erase in Display (ED).
|
||||||
* Ps = 0 -> Erase Below (default).
|
* Ps = 0 -> Erase Below (default).
|
||||||
@@ -1246,7 +1261,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
this._eraseInBufferLine(j, 0, this._activeBuffer.x + 1, true, respectProtect);
|
this._eraseInBufferLine(j, 0, this._activeBuffer.x + 1, true, respectProtect);
|
||||||
if (this._activeBuffer.x + 1 >= this._bufferService.cols) {
|
if (this._activeBuffer.x + 1 >= this._bufferService.cols) {
|
||||||
// Deleted entire previous line. This next line can no longer be wrapped.
|
// Deleted entire previous line. This next line can no longer be wrapped.
|
||||||
const nextLine = this._activeBuffer.lines.get(j + 1);
|
const nextLine = this._activeBuffer.lines.get(this._activeBuffer.ybase + j + 1);
|
||||||
if (nextLine) {
|
if (nextLine) {
|
||||||
nextLine.isWrapped = false;
|
nextLine.isWrapped = false;
|
||||||
}
|
}
|
||||||
@@ -1324,6 +1339,12 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, false, respectProtect);
|
this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, false, respectProtect);
|
||||||
|
if (this._activeBuffer.x + 1 >= this._bufferService.cols) {
|
||||||
|
const nextLine = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y + 1);
|
||||||
|
if (nextLine) {
|
||||||
|
nextLine.isWrapped = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, true, respectProtect);
|
this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, true, respectProtect);
|
||||||
@@ -1515,6 +1536,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
line.deleteCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
line.deleteCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
||||||
line.isWrapped = false;
|
line.isWrapped = false;
|
||||||
}
|
}
|
||||||
|
this._clearWrapBelowScrollMargins();
|
||||||
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1548,6 +1570,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
line.insertCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
line.insertCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
||||||
line.isWrapped = false;
|
line.isWrapped = false;
|
||||||
}
|
}
|
||||||
|
this._clearWrapBelowScrollMargins();
|
||||||
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1571,6 +1594,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
line.insertCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
line.insertCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
||||||
line.isWrapped = false;
|
line.isWrapped = false;
|
||||||
}
|
}
|
||||||
|
this._clearWrapBelowScrollMargins();
|
||||||
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1594,6 +1618,7 @@ export class InputHandler extends Disposable implements IInputHandler {
|
|||||||
line.deleteCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
line.deleteCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()));
|
||||||
line.isWrapped = false;
|
line.isWrapped = false;
|
||||||
}
|
}
|
||||||
|
this._clearWrapBelowScrollMargins();
|
||||||
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user