Remove precedingCodepoint - use precedingJoinState instead

repeatPrecedingCharacter (for REP sequence) changed to look at
the grapheme cluser to the "left" in the BufferLine, and repeat that.
This is an extension of the xterm behavior, and changes the
semantics of REP, so is not fully compatible.
However, the new behavior is cleaner and saner.

Moved precedingJoinState property to EscapeSequenceParser.
This commit is contained in:
Per Bothner
2023-08-24 07:58:06 -07:00
parent 5ccf4d3311
commit dc6dd6d2a8
4 changed files with 41 additions and 44 deletions
+5 -5
View File
@@ -272,18 +272,18 @@ describe('InputHandler Integration Tests', function(): void {
`);
await pollFor(page, () => getLinesAsArray(4), ['##', '##', '##', '######']);
await pollFor(page, () => getCursor(), { col: 6, row: 3 });
// should not repeat on fullwidth chars
// do repeat on fullwidth chars (change from xterm)
await page.evaluate(`
window.term.reset();
window.term.write('¥\x1b[10b');
`);
await pollFor(page, () => getLinesAsArray(1), ['¥']);
// should repeat only base char of combining
await pollFor(page, () => getLinesAsArray(1), ['¥¥¥¥¥¥¥¥¥¥¥']);
// change from xterm: repeat grapheme cluster
await page.evaluate(`
window.term.reset();
window.term.write('e\u0301\x1b[5b');
window.term.write('e\u0301\x1b[2b');
`);
await pollFor(page, () => getLinesAsArray(1), ['e\u0301eeeee']);
await pollFor(page, () => getLinesAsArray(1), ['e\u0301e\u0301e\u0301']);
// should wrap correctly
await page.evaluate(`
window.term.reset();