Skip to content

Commit f7710a4

Browse files
committed
Start pulling CSI handlers out
1 parent 6deaaa8 commit f7710a4

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/Parser.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ normalStateHandler[C0.BS] = (handler) => handler.backspace();
1212
normalStateHandler[C0.HT] = (handler) => handler.tab();
1313
normalStateHandler[C0.SO] = (handler) => handler.shiftOut();
1414
normalStateHandler[C0.SI] = (handler) => handler.shiftIn();
15+
// TODO: Add ESC and Default cases to normalStateHandler
16+
17+
const csiStateHandler: {[key: string]: (handler: IInputHandler, parser: Parser) => void} = {};
18+
csiStateHandler['?'] = (_, parser) => parser.setPrefix('?');
19+
csiStateHandler['>'] = (_, parser) => parser.setPrefix('>');
20+
csiStateHandler['!'] = (_, parser) => parser.setPrefix('!');
1521

1622
enum ParserState {
1723
NORMAL = 0,
@@ -487,6 +493,12 @@ export class Parser {
487493
break;
488494

489495
case ParserState.CSI:
496+
if (ch in normalStateHandler) {
497+
normalStateHandler[ch](this._inputHandler);
498+
// Skip below switch as this has handled these codes (eventually everything will be handled here
499+
break;
500+
}
501+
490502
// '?', '>', '!'
491503
if (ch === '?' || ch === '>' || ch === '!') {
492504
this._terminal.prefix = ch;
@@ -1036,6 +1048,10 @@ export class Parser {
10361048
}
10371049
}
10381050
}
1051+
1052+
public setPrefix(prefix: string) {
1053+
this._terminal.prefix = prefix;
1054+
}
10391055
}
10401056

10411057
const wcwidth = (function(opts) {

0 commit comments

Comments
 (0)