diff --git a/src/headless/Terminal.ts b/src/headless/Terminal.ts index cc8b152b2..2df76c61e 100644 --- a/src/headless/Terminal.ts +++ b/src/headless/Terminal.ts @@ -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; diff --git a/src/headless/public/Terminal.test.ts b/src/headless/public/Terminal.test.ts index 0b35fb0e7..0c4739744 100644 --- a/src/headless/public/Terminal.test.ts +++ b/src/headless/public/Terminal.test.ts @@ -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,