diff options
Diffstat (limited to 'parser.l')
-rw-r--r-- | parser.l | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -48,6 +48,7 @@ CUP {CSI}{CSIPARAM2}H ED {CSI}{CSIPARAM1}J EL {CSI}{CSIPARAM1}K IL {CSI}{CSIPARAM1}L +DCH {CSI}{CSIPARAM1}P SM {CSI}{SMPARAMS}h RM {CSI}{SMPARAMS}l SGR {CSI}{CSIPARAMS}m @@ -83,6 +84,7 @@ static void runes_parser_handle_cup(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_ed(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_el(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_il(RunesTerm *t, char *buf, size_t len); +static void runes_parser_handle_dch(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_sm(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_rm(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_sgr(RunesTerm *t, char *buf, size_t len); @@ -119,6 +121,7 @@ static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len); {ED} runes_parser_handle_ed(yyextra, yytext, yyleng); {EL} runes_parser_handle_el(yyextra, yytext, yyleng); {IL} runes_parser_handle_il(yyextra, yytext, yyleng); +{DCH} runes_parser_handle_dch(yyextra, yytext, yyleng); {SM} runes_parser_handle_sm(yyextra, yytext, yyleng); {RM} runes_parser_handle_rm(yyextra, yytext, yyleng); {SGR} runes_parser_handle_sgr(yyextra, yytext, yyleng); @@ -380,6 +383,14 @@ static void runes_parser_handle_il(RunesTerm *t, char *buf, size_t len) runes_display_scroll_up(t, params[0]); } +static void runes_parser_handle_dch(RunesTerm *t, char *buf, size_t len) +{ + int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams; + + runes_parser_extract_csi_params(buf + 2, len - 3, params, &nparams); + runes_display_delete_characters(t, params[0]); +} + static void runes_parser_handle_sm(RunesTerm *t, char *buf, size_t len) { int params[RUNES_PARSER_CSI_MAX_PARAMS], nparams, i; |