From f1035405e648ab7a8f3f546c325f06d3b60193f4 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Sun, 6 Aug 2023 12:44:43 -0700 Subject: [PATCH] Move precedingJoinState from EscapeSequenceParser to InputHandler This allows InputHandler._parser to be IEscapeSequenceParser rather than EscapeSequenceParser. --- src/common/InputHandler.ts | 10 +++++++--- src/common/parser/EscapeSequenceParser.ts | 3 --- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/common/InputHandler.ts b/src/common/InputHandler.ts index 7be2f1aa..76f77fdd 100644 --- a/src/common/InputHandler.ts +++ b/src/common/InputHandler.ts @@ -126,6 +126,10 @@ export class InputHandler extends Disposable implements IInputHandler { protected _windowTitleStack: string[] = []; protected _iconNameStack: string[] = []; + // Cached result of getJoinProperties(..., precedingCodepoint). + // Only valid if precedingCodepoint !== 0 + public precedingJoinState: number = -1; // UnicodeJoinProperties + private _curAttrData: IAttributeData = DEFAULT_ATTR_DATA.clone(); public getAttrData(): IAttributeData { return this._curAttrData; } private _eraseAttrDataInternal: IAttributeData = DEFAULT_ATTR_DATA.clone(); @@ -177,7 +181,7 @@ export class InputHandler extends Disposable implements IInputHandler { private readonly _oscLinkService: IOscLinkService, private readonly _coreMouseService: ICoreMouseService, private readonly _unicodeService: IUnicodeService, - private readonly _parser: EscapeSequenceParser = new EscapeSequenceParser() + private readonly _parser: IEscapeSequenceParser = new EscapeSequenceParser() ) { super(); this.register(this._parser); @@ -518,7 +522,7 @@ export class InputHandler extends Disposable implements IInputHandler { } let precedingInfo = this._parser.precedingCodepoint === 0 ? 0 - : this._parser.precedingJoinState; + : this.precedingJoinState; for (let pos = start; pos < end; ++pos) { code = data[pos]; @@ -632,7 +636,7 @@ export class InputHandler extends Disposable implements IInputHandler { } } - this._parser.precedingJoinState = precedingInfo; + this.precedingJoinState = precedingInfo; // store last char in Parser.precedingCodepoint for REP to work correctly // This needs to check whether: // - combining: only base char gets carried on (bug in xterm?) diff --git a/src/common/parser/EscapeSequenceParser.ts b/src/common/parser/EscapeSequenceParser.ts index f8da3b38..2f3ddd92 100644 --- a/src/common/parser/EscapeSequenceParser.ts +++ b/src/common/parser/EscapeSequenceParser.ts @@ -231,9 +231,6 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP public initialState: number; public currentState: number; public precedingCodepoint: number; - // Cached result of getJoinProperties(..., precedingCodepoint). - // Only valid if precedingCodepoint !== 0 - public precedingJoinState: number = -1; // UnicodeJoinProperties // buffers over several parse calls protected _params: Params;