tECH handled correctly. - st - [fork] customized build of st, the simple termin… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3ba517e796e0c7a73c5030ad791be1db36a8cec5 | |
parent eff05c7b90429ac4dddbbc53ac7d4c05dfc5efd4 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Sun, 21 Feb 2010 14:14:58 +0100 | |
ECH handled correctly. | |
Diffstat: | |
M st.c | 27 ++++++++++++++++++++++----- | |
1 file changed, 22 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -692,13 +692,24 @@ csihandle(void) { | |
default: | |
goto unknown; | |
} | |
- } else goto unknown; | |
+ } else { | |
+ switch(escseq.arg[0]) { | |
+ case 4: | |
+ term.mode &= ~MODE_INSERT; | |
+ break; | |
+ default: | |
+ goto unknown; | |
+ } | |
+ } | |
break; | |
case 'M': /* DL -- Delete <n> lines */ | |
DEFAULT(escseq.arg[0], 1); | |
tdeleteline(escseq.arg[0]); | |
break; | |
- case 'X': /* ECH -- Erase <n> char XXX: same? */ | |
+ case 'X': /* ECH -- Erase <n> char */ | |
+ DEFAULT(escseq.arg[0], 1); | |
+ tclearregion(term.c.x, term.c.y, term.c.x + escseq.arg[0], ter… | |
+ break; | |
case 'P': /* DCH -- Delete <n> char */ | |
DEFAULT(escseq.arg[0], 1); | |
tdeletechar(escseq.arg[0]); | |
t@@ -727,10 +738,16 @@ csihandle(void) { | |
tcursor(CURSOR_SAVE); | |
tclearregion(0, 0, term.col-1, term.row-1); | |
break; | |
- default: | |
- goto unknown; | |
+ default: goto unknown; | |
+ } | |
+ } else { | |
+ switch(escseq.arg[0]) { | |
+ case 4: | |
+ term.mode |= MODE_INSERT; | |
+ break; | |
+ default: goto unknown; | |
} | |
- } else goto unknown; | |
+ }; | |
break; | |
case 'm': /* SGR -- Terminal attribute (color) */ | |
tsetattr(escseq.arg, escseq.narg); |