Merge branch 'master' into merogge/buffer-marker-decoration

This commit is contained in:
Megan Rogge
2022-02-08 12:07:13 -06:00
committed by GitHub
2 changed files with 27 additions and 4 deletions
+4 -4
View File
@@ -44,7 +44,7 @@ export class Buffer implements IBuffer {
private _whitespaceCell: ICellData = CellData.fromCharData([0, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE]);
private _cols: number;
private _rows: number;
private _state: string | undefined;
private _isClearing: boolean = false;
constructor(
private _hasScrollback: boolean,
@@ -587,12 +587,12 @@ export class Buffer implements IBuffer {
}
public clearMarkers(): void {
this._state = BufferState.CLEARING;
this._isClearing = true;
for (const marker of this.markers) {
marker.dispose();
}
this.markers = [];
this._state = undefined;
this._isClearing = false;
}
public addMarker(y: number): Marker {
@@ -626,7 +626,7 @@ export class Buffer implements IBuffer {
}
private _removeMarker(marker: Marker): void {
if (this._state !== BufferState.CLEARING) {
if (!this._isClearing) {
this.markers.splice(this.markers.indexOf(marker), 1);
}
}
+23
View File
@@ -559,6 +559,29 @@ describe('API Integration Tests', function(): void {
assert.equal(await page.evaluate(`window.term.buffer.active.getLine(0).getCell(2).getChars()`), '');
assert.equal(await page.evaluate(`window.term.buffer.active.getLine(0).getCell(2).getWidth()`), 0);
});
it('clearMarkers', async () => {
await openTerminal(page, { cols: 5 });
await page.evaluate(`
window.disposeStack = [];
`);
await writeSync(page, '\\n\\n\\n\\n');
await writeSync(page, '\\n\\n\\n\\n');
await writeSync(page, '\\n\\n\\n\\n');
await writeSync(page, '\\n\\n\\n\\n');
await page.evaluate(`window.term.addMarker(1)`);
await page.evaluate(`window.term.addMarker(2)`);
await page.evaluate(`window.term.scrollLines(10)`);
await page.evaluate(`window.term.addMarker(3)`);
await page.evaluate(`window.term.addMarker(4)`);
await page.evaluate(`
for (let i = 0; i < window.term.markers.length; ++i) {
const marker = window.term.markers[i];
marker.onDispose(() => window.disposeStack.push(marker));
}`);
await page.evaluate(`window.term.clear()`);
assert.equal(await page.evaluate(`window.disposeStack.length`), 4);
});
});
it('active, normal, alternate', async () => {