Merge pull request #5931 from xtermjs/cursor/headless-clear-markers-ccc0

fix(headless): clear markers when clear() is called
This commit is contained in:
Daniel Imms
2026-05-27 09:18:17 -07:00
committed by GitHub
2 changed files with 24 additions and 0 deletions
+1
View File
@@ -108,6 +108,7 @@ export class Terminal extends CoreTerminal {
// Don't clear if it's already clear
return;
}
this.buffer.clearAllMarkers();
this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)!);
this.buffer.lines.length = 1;
this.buffer.ydisp = 0;
+23
View File
@@ -114,6 +114,29 @@ describe('Headless API Tests', function (): void {
}
});
it('clear disposes markers', async () => {
term = new Terminal({ rows: 5, allowProposedApi: true });
for (let i = 0; i < 10; i++) {
await writeSync('\n\rtest' + i);
}
const markers = [
term.registerMarker(1)!,
term.registerMarker(2)!,
term.registerMarker(3)!,
term.registerMarker(4)!
];
let disposeCount = 0;
for (const marker of markers) {
marker.onDispose(() => disposeCount++);
}
term.clear();
strictEqual(disposeCount, markers.length);
for (const marker of markers) {
strictEqual(marker.isDisposed, true);
}
strictEqual(term.markers.length, 0);
});
describe('options', () => {
const termOptions = {
cols: 80,