all repos — st @ 9cae1eb0ded2e1ca604753893e2307531ef73afc

st (suckless terminal) config

Remove the cruft of the user to have to define the different font styles.
Christoph Lohmann 20h@r-36.net
commit

9cae1eb0ded2e1ca604753893e2307531ef73afc

parent

ed5b8700a6e6c14b814dcc2e54a90eb1868070b5

1 files changed, 55 insertions(+), 5 deletions(-)

jump to
M st.cst.c

@@ -336,6 +336,7 @@

static void *xmalloc(size_t); static void *xrealloc(void *, size_t); static void *xcalloc(size_t nmemb, size_t size); +static char *smstrcat(char *, ...); static void (*handler[LASTEvent])(XEvent *) = { [KeyPress] = kpress,

@@ -391,6 +392,44 @@ void *p = calloc(nmemb, size);

if(!p) die("Out of memory\n"); return p; +} + +char * +smstrcat(char *src, ...) +{ + va_list fmtargs; + char *ret, *p, *v; + int len, slen, flen; + + len = slen = strlen(src); + + va_start(fmtargs, src); + for(;;) { + v = va_arg(fmtargs, char *); + if(v == NULL) + break; + len += strlen(v); + } + va_end(fmtargs); + + p = ret = xmalloc(len+1); + memmove(p, src, slen); + p += slen; + + va_start(fmtargs, src); + for(;;) { + v = va_arg(fmtargs, char *); + if(v == NULL) + break; + flen = strlen(v); + memmove(p, v, flen); + p += flen; + } + va_end(fmtargs); + + ret[len] = '\0'; + + return ret; } int

@@ -2017,11 +2056,22 @@ f->rbearing = f->xft_set->max_advance_width;

} void -initfonts(char *fontstr, char *bfontstr, char *ifontstr, char *ibfontstr) { +initfonts(char *fontstr) { + char *fstr; + xinitfont(&dc.font, fontstr); - xinitfont(&dc.bfont, bfontstr); - xinitfont(&dc.ifont, ifontstr); - xinitfont(&dc.ibfont, ibfontstr); + + fstr = smstrcat(fontstr, ":weight=bold", NULL); + xinitfont(&dc.bfont, fstr); + free(fstr); + + fstr = smstrcat(fontstr, ":slant=italic,oblique", NULL); + xinitfont(&dc.ifont, fstr); + free(fstr); + + fstr = smstrcat(fontstr, ":weight=bold:slant=italic,oblique", NULL); + xinitfont(&dc.ibfont, fstr); + free(fstr); } void

@@ -2037,7 +2087,7 @@ xw.scr = XDefaultScreen(xw.dpy);

xw.vis = XDefaultVisual(xw.dpy, xw.scr); /* font */ - initfonts(FONT, BOLDFONT, ITALICFONT, ITALICBOLDFONT); + initfonts(FONT); /* XXX: Assuming same size for bold font */ xw.cw = dc.font.rbearing - dc.font.lbearing;