all repos — st @ 52d6fb1ab1f7d41839edebb63c3408578cd44e3c

st (suckless terminal) config

Move terminal echo logic into st.c

The only thing differentiating ttywrite and ttysend was the potential
for echo; make this a parameter and remove ttysend.

Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
Devin J. Pohly djpohly@gmail.com
commit

52d6fb1ab1f7d41839edebb63c3408578cd44e3c

parent

cfc7acdfd923924ae150a32061fb95987697b159

3 files changed, 19 insertions(+), 25 deletions(-)

jump to
M st.cst.c

@@ -784,11 +784,14 @@ return ret;

} void -ttywrite(const char *s, size_t n) +ttywrite(const char *s, size_t n, int may_echo) { fd_set wfd, rfd; ssize_t r; size_t lim = 256; + + if (may_echo && IS_SET(MODE_ECHO)) + twrite(s, n, 1); /* * Remember that we are using a pty, which might be a modem line.

@@ -838,14 +841,6 @@ return;

write_error: die("write error on tty: %s\n", strerror(errno)); -} - -void -ttysend(char *s, size_t n) -{ - ttywrite(s, n); - if (IS_SET(MODE_ECHO)) - twrite(s, n, 1); } void

@@ -1570,7 +1565,7 @@ }

break; case 'c': /* DA -- Device Attributes */ if (csiescseq.arg[0] == 0) - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 'C': /* CUF -- Cursor <n> Forward */ case 'a': /* HPR -- Cursor <n> Forward */

@@ -1698,7 +1693,7 @@ case 'n': /* DSR – Device Status Report (cursor position) */

if (csiescseq.arg[0] == 6) { len = snprintf(buf, sizeof(buf),"\033[%i;%iR", term.c.y+1, term.c.x+1); - ttywrite(buf, len); + ttywrite(buf, len, 0); } break; case 'r': /* DECSTBM -- Set Scrolling Region */

@@ -1916,7 +1911,7 @@ if ((utf32 = strtoul(us, &e, 16)) == ULONG_MAX ||

(*e != '\n' && *e != '\0')) return; - ttysend(uc, utf8encode(utf32, uc)); + ttywrite(uc, utf8encode(utf32, uc), 1); } void

@@ -2129,7 +2124,7 @@ case 0x98: /* TODO: SOS */

case 0x99: /* TODO: SGCI */ break; case 0x9a: /* DECID -- Identify Terminal */ - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 0x9b: /* TODO: CSI */ case 0x9c: /* TODO: ST */

@@ -2201,7 +2196,7 @@ tmoveto(term.c.x, term.c.y-1);

} break; case 'Z': /* DECID -- Identify Terminal */ - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 'c': /* RIS -- Reset to inital state */ treset();
M st.hst.h

@@ -176,8 +176,7 @@ void tsetdirtattr(int);

void ttynew(char *, char *, char **); size_t ttyread(void); void ttyresize(int, int); -void ttysend(char *, size_t); -void ttywrite(const char *, size_t); +void ttywrite(const char *, size_t, int); void resettitle(void);
M x.cx.c

@@ -390,7 +390,7 @@ } else {

return; } - ttywrite(buf, len); + ttywrite(buf, len, 0); } void

@@ -408,7 +408,7 @@

for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { if (e->xbutton.button == ms->b && match(ms->mask, e->xbutton.state)) { - ttysend(ms->s, strlen(ms->s)); + ttywrite(ms->s, strlen(ms->s), 1); return; } }

@@ -520,10 +520,10 @@ *repl++ = '\r';

} if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) - ttywrite("\033[200~", 6); - ttysend((char *)data, nitems * format / 8); + ttywrite("\033[200~", 6, 0); + ttywrite((char *)data, nitems * format / 8, 1); if (IS_SET(MODE_BRCKTPASTE) && rem == 0) - ttywrite("\033[201~", 6); + ttywrite("\033[201~", 6, 0); XFree(data); /* number of 32-bit chunks returned */ ofs += nitems * format / 32;

@@ -1634,12 +1634,12 @@ XSetICFocus(xw.xic);

win.state |= WIN_FOCUSED; xseturgency(0); if (IS_SET(MODE_FOCUS)) - ttywrite("\033[I", 3); + ttywrite("\033[I", 3, 0); } else { XUnsetICFocus(xw.xic); win.state &= ~WIN_FOCUSED; if (IS_SET(MODE_FOCUS)) - ttywrite("\033[O", 3); + ttywrite("\033[O", 3, 0); } }

@@ -1714,7 +1714,7 @@ }

/* 2. custom keys from config.h */ if ((customkey = kmap(ksym, e->state))) { - ttysend(customkey, strlen(customkey)); + ttywrite(customkey, strlen(customkey), 1); return; }

@@ -1733,7 +1733,7 @@ buf[0] = '\033';

len = 2; } } - ttysend(buf, len); + ttywrite(buf, len, 1); }