Merge pull request #5954 from xtermjs/cursor/align-headless-marker-alt-buffer-2866

Allow markers on alt buffer in headless terminal
This commit is contained in:
Daniel Imms
2026-05-27 14:51:35 -07:00
committed by GitHub
4 changed files with 18 additions and 15 deletions
+1 -6
View File
@@ -69,12 +69,7 @@ export class Terminal extends CoreTerminal {
return this.buffer.markers;
}
public registerMarker(cursorYOffset: number): IMarker | undefined {
// Disallow markers on the alt buffer
if (this.buffer !== this.buffers.normal) {
return;
}
public registerMarker(cursorYOffset: number): IMarker {
return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + cursorYOffset);
}
+13 -4
View File
@@ -120,10 +120,10 @@ describe('Headless API Tests', function (): void {
await writeSync('\n\rtest' + i);
}
const markers = [
term.registerMarker(1)!,
term.registerMarker(2)!,
term.registerMarker(3)!,
term.registerMarker(4)!
term.registerMarker(1),
term.registerMarker(2),
term.registerMarker(3),
term.registerMarker(4)
];
let disposeCount = 0;
for (const marker of markers) {
@@ -419,6 +419,15 @@ describe('Headless API Tests', function (): void {
strictEqual(term.buffer.normal.getLine(0)!.translateToString(), 'norm ');
strictEqual(term.buffer.alternate.getLine(0), undefined);
});
it('registerMarker on alternate buffer', async () => {
term = new Terminal({ cols: 5, allowProposedApi: true });
await writeSync('\x1b[?47h');
const marker = term.registerMarker(0);
strictEqual(term.buffer.active.type, 'alternate');
strictEqual(term.markers.length, 1);
strictEqual(term.markers[0], marker);
});
});
describe('modes', () => {
+2 -2
View File
@@ -130,11 +130,11 @@ export class Terminal extends Disposable implements ITerminalApi {
this._verifyIntegers(columns, rows);
this._core.resize(columns, rows);
}
public registerMarker(cursorYOffset: number = 0): IMarker | undefined {
public registerMarker(cursorYOffset: number = 0): IMarker {
this._verifyIntegers(cursorYOffset);
return this._core.registerMarker(cursorYOffset);
}
public addMarker(cursorYOffset: number): IMarker | undefined {
public addMarker(cursorYOffset: number): IMarker {
return this.registerMarker(cursorYOffset);
}
public dispose(): void {
+2 -3
View File
@@ -825,12 +825,11 @@ declare module '@xterm/headless' {
resize(columns: number, rows: number): void;
/**
* Adds a marker to the normal buffer and returns it. If the alt buffer is
* active, undefined is returned.
* Adds a marker to the normal buffer and returns it.
* @param cursorYOffset The y position offset of the marker from the cursor.
* @returns The new marker or undefined.
*/
registerMarker(cursorYOffset?: number): IMarker | undefined;
registerMarker(cursorYOffset?: number): IMarker;
/*
* Disposes of the terminal, detaching it from the DOM and removing any