mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
Optimize parsing of OSC_STRING to minimize string concatenation.
This commit is contained in:
@@ -391,7 +391,11 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
|
||||
}
|
||||
|
||||
// normal transition & action lookup
|
||||
transition = (code < 0xa0) ? (table[currentState << 8 | code]) : DEFAULT_TRANSITION;
|
||||
transition = (code < 0xa0
|
||||
? (table[currentState << 8 | code])
|
||||
: currentState === ParserState.OSC_STRING
|
||||
? (ParserAction.OSC_PUT << 4) | ParserState.OSC_STRING
|
||||
: DEFAULT_TRANSITION);
|
||||
switch (transition >> 4) {
|
||||
case ParserAction.PRINT:
|
||||
print = (~print) ? print : i;
|
||||
@@ -423,10 +427,6 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
|
||||
case ParserState.GROUND:
|
||||
print = (~print) ? print : i;
|
||||
break;
|
||||
case ParserState.OSC_STRING:
|
||||
osc += String.fromCharCode(code);
|
||||
transition |= ParserState.OSC_STRING;
|
||||
break;
|
||||
case ParserState.CSI_IGNORE:
|
||||
transition |= ParserState.CSI_IGNORE;
|
||||
break;
|
||||
@@ -517,7 +517,16 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
|
||||
osc = '';
|
||||
break;
|
||||
case ParserAction.OSC_PUT:
|
||||
osc += data.charAt(i);
|
||||
for (let j = i + 1; ; j++) {
|
||||
if (j >= l
|
||||
|| ((code = data.charCodeAt(j)) <= 0x9f
|
||||
&& (table[ParserState.OSC_STRING << 8 | code] >> 4
|
||||
!== ParserAction.OSC_PUT))) {
|
||||
osc += data.substring(i, j);
|
||||
i = j - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ParserAction.OSC_END:
|
||||
if (osc && code !== 0x18 && code !== 0x1a) {
|
||||
|
||||
Reference in New Issue
Block a user