aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.l')
-rw-r--r--src/parser.l11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/parser.l b/src/parser.l
index 3e291da..6141f17 100644
--- a/src/parser.l
+++ b/src/parser.l
@@ -50,6 +50,7 @@ CSIPARAM24 ([0-9]+(;[0-9]+){1,3})?
CSIPARAMS ([0-9]+(;[0-9]+)*)?
SMPARAMS ([<=?]?[0-9]+(;[<=?]?[0-9]+)*)?
+ICH {CSI}{CSIPARAM1}@
CUU {CSI}{CSIPARAM1}A
CUD {CSI}{CSIPARAM1}B
CUF {CSI}{CSIPARAM1}C
@@ -94,6 +95,7 @@ static void runes_parser_extract_csi_params(
char *buf, size_t len, int *params, int *nparams);
static void runes_parser_extract_sm_params(
char *buf, size_t len, char *modes, int *params, int *nparams);
+static void runes_parser_handle_ich(RunesTerm *t, char *buf, size_t len);
static void runes_parser_handle_cuu(RunesTerm *t, char *buf, size_t len);
static void runes_parser_handle_cud(RunesTerm *t, char *buf, size_t len);
static void runes_parser_handle_cuf(RunesTerm *t, char *buf, size_t len);
@@ -136,6 +138,7 @@ static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len);
{DECSC} runes_parser_handle_decsc(yyextra); return -1;
{DECRC} runes_parser_handle_decrc(yyextra); return -1;
+{ICH} runes_parser_handle_ich(yyextra, yytext, yyleng); return -1;
{CUU} runes_parser_handle_cuu(yyextra, yytext, yyleng); return -1;
{CUD} runes_parser_handle_cud(yyextra, yytext, yyleng); return -1;
{CUF} runes_parser_handle_cuf(yyextra, yytext, yyleng); return -1;
@@ -368,6 +371,14 @@ static void runes_parser_extract_sm_params(
}
}
+static void runes_parser_handle_ich(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_insert_characters(t, params[0]);
+}
+
static void runes_parser_handle_cuu(RunesTerm *t, char *buf, size_t len)
{
int params[RUNES_PARSER_CSI_MAX_PARAMS] = { 1 }, nparams;