all repos — st @ ef69118028afad1938951a1f7dff8db2aa557879

st (suckless terminal) config

factor and cleanup code.
Aurélien Aptel aurelien.aptel@gmail.com
commit

ef69118028afad1938951a1f7dff8db2aa557879

parent

f732ca5f1f03a0a496a07aa6bda15f6c363a2484

1 files changed, 11 insertions(+), 12 deletions(-)

jump to
M st.cst.c

@@ -387,10 +387,10 @@ }

void ttyread(void) { - char buf[BUFSIZ] = {0}; + char buf[BUFSIZ]; int ret; - if((ret = read(cmdfd, buf, BUFSIZ)) < 0) + if((ret = read(cmdfd, buf, LEN(buf))) < 0) die("Couldn't read from shell: %s\n", SERRNO); else tputs(buf, ret);

@@ -465,8 +465,7 @@ Line temp;

LIMIT(n, 0, term.bot-term.top+1); - for(i = 0; i < n; i++) - memset(term.line[term.bot-i], 0, term.col*sizeof(Glyph)); + tclearregion(0, term.bot-n+1, term.col-1, term.bot); for(i = term.bot; i >= term.top+n; i--) { temp = term.line[i];

@@ -481,8 +480,7 @@ int i;

Line temp; LIMIT(n, 0, term.bot-term.top+1); - for(i = 0; i < n; i++) - memset(term.line[term.top+i], 0, term.col*sizeof(Glyph)); + tclearregion(0, term.top, term.col-1, term.top+n-1); for(i = term.top; i <= term.bot-n; i++) { temp = term.line[i];

@@ -957,7 +955,8 @@ if(BETWEEN(c, 0x40, 0x7E) || escseq.len >= ESC_BUF_SIZ) {

term.esc = 0; csiparse(), csihandle(); } - } else if(term.esc & ESC_OSC) { + /* TODO: handle other OSC */ + } else if(term.esc & ESC_OSC) { if(c == ';') { term.titlelen = 0; term.esc = ESC_START | ESC_TITLE;

@@ -1201,18 +1200,18 @@ /* colors */

xloadcols(); /* windows */ - xw.h = term.row * xw.ch + 2*BORDER; - xw.w = term.col * xw.cw + 2*BORDER; + xw.bufh = term.row * xw.ch; + xw.bufw = term.col * xw.cw; + xw.h = xw.bufh + 2*BORDER; + xw.w = xw.bufw + 2*BORDER; xw.win = XCreateSimpleWindow(xw.dis, XRootWindow(xw.dis, xw.scr), 0, 0, xw.w, xw.h, 0, dc.col[DefaultBG], dc.col[DefaultBG]); - xw.bufw = xw.w - 2*BORDER; - xw.bufh = xw.h - 2*BORDER; xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); /* gc */ dc.gc = XCreateGC(xw.dis, xw.win, 0, NULL); - + /* event mask */ XSelectInput(xw.dis, xw.win, ExposureMask | KeyPressMask | StructureNotifyMask | FocusChangeMask | PointerMotionMask