st

suckless terminal - with my changes
git clone https://pi.duncano.de/git/st.git
Log | Files | Refs | README | LICENSE

commit 870f961c49d3f9dfea8d78666e73fcdd0f90cc57
parent 1629363f2d009a0c0d61209e4126ff09fa0e11a4
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Tue, 29 Apr 2014 09:58:55 +0200

Fix displaying control code

Control code are never displayed. It is not important if graphic
charset is displayed or not.

Diffstat:
st.c | 22+++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/st.c b/st.c @@ -392,7 +392,7 @@ static void tsetdirtattr(int); static void tsetmode(bool, bool, int *, int); static void tfulldirt(void); static void techo(char *, int); -static bool tcontrolcode(uchar ); +static void tcontrolcode(uchar ); static void tdectest(char ); static int32_t tdefcolor(int *, int *, int); static void tdeftran(char); @@ -2328,7 +2328,7 @@ tdeftran(char ascii) { term.trantbl[term.icharset] = (*bp)[1]; } -bool +void tcontrolcode(uchar ascii) { static char question[UTF_SIZ] = "?"; @@ -2363,7 +2363,7 @@ tcontrolcode(uchar ascii) { csireset(); term.esc &= ~(ESC_CSI|ESC_ALTCHARSET|ESC_TEST); term.esc |= ESC_START; - return 1; + return; case '\016': /* SO */ term.charset = 0; break; @@ -2395,11 +2395,9 @@ tcontrolcode(uchar ascii) { case 0x9e: /* TODO: PM */ case 0x9f: /* TODO: APC */ break; - default: - return 0; } term.esc &= ~(ESC_STR_END|ESC_STR); - return 1; + return; } void @@ -2478,8 +2476,11 @@ tputc(char *c, int len) { * they must not cause conflicts with sequences. */ if(control) { - if (tcontrolcode(ascii)) - return; + tcontrolcode(ascii); + /* + * control codes are not shown ever + */ + return; } else if(term.esc & ESC_START) { if(term.esc & ESC_CSI) { csiescseq.buf[csiescseq.len++] = ascii; @@ -2576,11 +2577,6 @@ tputc(char *c, int len) { */ return; } - /* - * Display control codes only if we are in graphic mode - */ - if(control && term.trantbl[term.charset] != CS_GRAPHIC0) - return; if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y)) selclear(NULL);