X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=inject_csi.c;fp=inject_csi.c;h=3942304ce2d9338c00e169c1f8750ddd76dad9e1;hb=1748b4c1fc413781b4e6cf1a66ed0c1c6980be5d;hp=e2b6430a28ce8a3cf481674aa590e24416f5536f;hpb=7f23e2cf7b485ba8c4a66ccc2ee7fc4ee8172109;p=apps%2Fmadtty.git diff --git a/inject_csi.c b/inject_csi.c index e2b6430..3942304 100644 --- a/inject_csi.c +++ b/inject_csi.c @@ -23,20 +23,10 @@ Copyright (c) 2004 Bruno T. C. de Oliveira #include "roteprivate.h" #include #include +#include #define MAX_CSI_ES_PARAMS 32 -static inline void clamp_cursor_to_bounds(RoteTerm *rt) { - if (rt->crow < 0) rt->curpos_dirty = true, rt->crow = 0; - if (rt->ccol < 0) rt->curpos_dirty = true, rt->ccol = 0; - - if (rt->crow >= rt->rows) - rt->curpos_dirty = true, rt->crow = rt->rows - 1; - - if (rt->ccol >= rt->cols) - rt->curpos_dirty = true, rt->ccol = rt->cols - 1; -} - /* interprets a 'set attribute' (SGR) CSI escape sequence */ static void interpret_csi_SGR(RoteTerm *rt, int param[], int pcount) { int i; @@ -328,6 +318,14 @@ void rote_es_interpret_csi(RoteTerm *rt) { /* delegate handling depending on command character (verb) */ switch (verb) { + case 'h': + if (param_count == 1 && csiparam[0] == 4) /* insert mode */ + rt->insert = true; + break; + case 'l': + if (param_count == 1 && csiparam[0] == 4) /* replace mode */ + rt->insert = false; + break; case 'm': /* it's a 'set attribute' sequence */ interpret_csi_SGR(rt, csiparam, param_count); break; case 'J': /* it's an 'erase display' sequence */ @@ -356,10 +354,12 @@ void rote_es_interpret_csi(RoteTerm *rt) { interpret_csi_SAVECUR(rt, csiparam, param_count); break; case 'u': /* restore cursor location */ interpret_csi_RESTORECUR(rt, csiparam, param_count); break; - #ifdef DEBUG default: - fprintf(stderr, "Unrecogized CSI: <%s>\n", rt->pd->esbuf); break; - #endif + #ifdef DEBUG + fprintf(stderr, "Unrecogized CSI: verb=%c <%s>\n", + verb, rt->pd->esbuf); + #endif + break; } }