Expose API to clear the terminal

Fixes #173
This commit is contained in:
Daniel Imms
2016-09-17 02:39:22 -07:00
parent 59e72b8b07
commit 76719413f9
2 changed files with 46 additions and 0 deletions
+14
View File
@@ -3054,6 +3054,20 @@ Terminal.prototype.eraseLeft = function(x, y) {
this.updateRange(y);
};
/**
* Clears the entire buffer, making the prompt line the new first line.
*/
Terminal.prototype.clear = function() {
this.ydisp = 0;
this.ybase = 0;
this.y = 0;
this.lines = [this.lines[this.lines.length - 1]];
for (var i = 1; i < this.rows; i++) {
this.lines.push(this.blankLine());
}
this.refresh(0, this.rows - 1);
this.emit('scroll', this.ydisp);
};
/**
* Erase all content in the given line
+32
View File
@@ -24,6 +24,38 @@ describe('xterm.js', function() {
});
});
describe('clear', function() {
it('should clear a buffer equal to rows', function() {
var promptLine = xterm.lines[xterm.ybase + xterm.y];
xterm.clear();
assert.equal(xterm.y, 0);
assert.equal(xterm.ybase, 0);
assert.equal(xterm.ydisp, 0);
assert.equal(xterm.lines.length, xterm.rows);
assert.deepEqual(xterm.lines[0], promptLine);
for (var i = 1; i < xterm.rows; i++) {
assert.deepEqual(xterm.lines[0], xterm.blankLine());
}
});
it('should clear a buffer larger than rows', function() {
// Fill the buffer with dummy rows
for (var i = 0; i < xterm.rows * 2; i++) {
xterm.write('test\n');
}
var promptLine = xterm.lines[xterm.ybase + xterm.y];
xterm.clear();
assert.equal(xterm.y, 0);
assert.equal(xterm.ybase, 0);
assert.equal(xterm.ydisp, 0);
assert.equal(xterm.lines.length, xterm.rows);
assert.deepEqual(xterm.lines[0], promptLine);
for (var i = 1; i < xterm.rows; i++) {
assert.deepEqual(xterm.lines[0], xterm.blankLine());
}
});
});
describe('evaluateKeyEscapeSequence', function() {
it('should return the correct escape sequence for unmodified keys', function() {
// Backspace