aboutsummaryrefslogtreecommitdiffstats
path: root/parser.l
diff options
context:
space:
mode:
Diffstat (limited to 'parser.l')
-rw-r--r--parser.l22
1 files changed, 19 insertions, 3 deletions
diff --git a/parser.l b/parser.l
index a525d8f..0fb8c1d 100644
--- a/parser.l
+++ b/parser.l
@@ -26,9 +26,11 @@ FF \014
CR \015
ESC \033
-CSI {ESC}\[
-OSC {ESC}\]
-RI {ESC}M
+CSI {ESC}\[
+OSC {ESC}\]
+RI {ESC}M
+DECSC {ESC}7
+DECRC {ESC}8
DECCSI {CSI}\?
CSIPARAM1 ([0-9]+)?
@@ -62,6 +64,8 @@ static void runes_parser_handle_tab(RunesTerm *t);
static void runes_parser_handle_lf(RunesTerm *t);
static void runes_parser_handle_cr(RunesTerm *t);
static void runes_parser_handle_ri(RunesTerm *t);
+static void runes_parser_handle_decsc(RunesTerm *t);
+static void runes_parser_handle_decrc(RunesTerm *t);
static void runes_parser_extract_csi_params(
char *buf, size_t len, int *params, int *nparams);
static void runes_parser_extract_sm_params(
@@ -96,6 +100,8 @@ static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len);
{CR} runes_parser_handle_cr(yyextra);
{RI} runes_parser_handle_ri(yyextra);
+{DECSC} runes_parser_handle_decsc(yyextra);
+{DECRC} runes_parser_handle_decrc(yyextra);
{CUU} runes_parser_handle_cuu(yyextra, yytext, yyleng);
{CUD} runes_parser_handle_cud(yyextra, yytext, yyleng);
@@ -194,6 +200,16 @@ static void runes_parser_handle_ri(RunesTerm *t)
runes_display_move_to(t, t->row - 1, t->col);
}
+static void runes_parser_handle_decsc(RunesTerm *t)
+{
+ runes_display_save_cursor(t);
+}
+
+static void runes_parser_handle_decrc(RunesTerm *t)
+{
+ runes_display_restore_cursor(t);
+}
+
static void runes_parser_extract_csi_params(
char *buf, size_t len, int *params, int *nparams)
{