diff --git a/addons/addon-serialize/src/SerializeAddon.test.ts b/addons/addon-serialize/src/SerializeAddon.test.ts index aacf76ed..069a0a04 100644 --- a/addons/addon-serialize/src/SerializeAddon.test.ts +++ b/addons/addon-serialize/src/SerializeAddon.test.ts @@ -149,17 +149,19 @@ describe('SerializeAddon', () => { }); it('serializes rows within a provided range', async () => { - await writeP(terminal, 'hello\r\nworld'); + await writeP(terminal, 'prompt>hello\r\nworld'); const output = serializeAddon.serializeAsHTML({ range: { - start: 0, - end: 0 + startLine: 0, + endLine: 0, + startCol: 7 } }); const rowMatches = output.match(/
.*?<\/span><\/div>/g) || []; assert.equal(rowMatches.length, 1, output); assert.ok(rowMatches[0]?.includes('hello')); + assert.ok(!output.includes('prompt>')); assert.ok(!output.includes('world')); }); diff --git a/addons/addon-serialize/src/SerializeAddon.ts b/addons/addon-serialize/src/SerializeAddon.ts index 317dec8d..c6a5483c 100644 --- a/addons/addon-serialize/src/SerializeAddon.ts +++ b/addons/addon-serialize/src/SerializeAddon.ts @@ -453,8 +453,8 @@ export class SerializeAddon implements ITerminalAddon , ISerializeApi { const range = options.range; if (range) { return handler.serialize({ - start: { x: 0, y: typeof range.start === 'number' ? range.start : range.start.line }, - end: { x: terminal.cols, y: typeof range.end === 'number' ? range.end : range.end.line } + start: { x: range.startCol, y: typeof range.startLine === 'number' ? range.startLine : range.startLine }, + end: { x: terminal.cols, y: typeof range.endLine === 'number' ? range.endLine : range.endLine } }); } if (!onlySelection) { diff --git a/addons/addon-serialize/typings/addon-serialize.d.ts b/addons/addon-serialize/typings/addon-serialize.d.ts index d8d5fe07..06f41752 100644 --- a/addons/addon-serialize/typings/addon-serialize.d.ts +++ b/addons/addon-serialize/typings/addon-serialize.d.ts @@ -92,9 +92,15 @@ declare module '@xterm/addon-serialize' { includeGlobalBackground: boolean; /** - * The row range to serialize. This is prioritized over {@link onlySelection}. + * The range to serialize. This is prioritized over {@link onlySelection}. */ - range?: ISerializeRange; + range?: ISerializeBufferRange; + } + + export interface ISerializeBufferRange { + startLine: number; + endLine: number; + startCol: number; } export interface ISerializeRange {