# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 23ed12857f113603b689521d3f6e40ff954d25bb
    parent 9eb70a2d3ecbd96a92e5f824868500baba74b688
    Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
    Date:   Mon, 13 Apr 2015 22:01:40 +0200

    Merge branch 'master' of ssh://suckless.org/gitrepos/st

    Diffstat:
    Mconfig.def.h | 5+++++
    Mst.c | 48+++++++++++++++++++++---------------------------

    2 files changed, 26 insertions(+), 27 deletions(-)
    diff --git a/config.def.h b/config.def.h
    @@ -42,6 +42,11 @@ static unsigned int actionfps = 30;
     static unsigned int blinktimeout = 800;

     /*
    + * thickness of underline and bar cursors
    + */
    +static unsigned int cursorthickness = 2;
    +
    +/*
      * bell volume. It must be a value between -100 and 100. Use 0 for disabling
      * it
      */
    diff --git a/st.c b/st.c
    @@ -359,7 +359,7 @@ static void csidump(void);
     static void csihandle(void);
     static void csiparse(void);
     static void csireset(void);
    -static int eschandle(uchar ascii);
    +static int eschandle(uchar);
     static void strdump(void);
     static void strhandle(void);
     static void strparse(void);
    @@ -406,8 +406,9 @@ static void ttyread(void);
     static void ttyresize(void);
     static void ttysend(char *, size_t);
     static void ttywrite(const char *, size_t);
    -static void tstrsequence(uchar c);
    +static void tstrsequence(uchar);

    +static inline ushort sixd_to_16bit(int);
     static void xdraws(char *, Glyph, int, int, int, int);
     static void xhints(void);
     static void xclear(int, int, int, int);
    @@ -418,7 +419,6 @@ static int xsetcolorname(int, const char *);
     static int xgeommasktogravity(int);
     static int xloadfont(Font *, FcPattern *);
     static void xloadfonts(char *, double);
    -static int xloadfontset(Font *);
     static void xsettitle(char *);
     static void xresettitle(void);
     static void xsetpointermotion(int);
    @@ -452,6 +452,8 @@ static char *getsel(void);
     static void selcopy(void);
     static void selscroll(int, int);
     static void selsnap(int, int *, int *, int);
    +static int x2col(int);
    +static int y2row(int);
     static void getbuttoninfo(XEvent *);
     static void mousereport(XEvent *);

    @@ -640,7 +642,7 @@ utf8validate(long *u, size_t i) {
     	return i;
     }

    -static void
    +void
     selinit(void) {
     	memset(&sel.tclick1, 0, sizeof(sel.tclick1));
     	memset(&sel.tclick2, 0, sizeof(sel.tclick2));
    @@ -653,7 +655,7 @@ selinit(void) {
     		sel.xtarget = XA_STRING;
     }

    -static int
    +int
     x2col(int x) {
     	x -= borderpx;
     	x /= xw.cw;
    @@ -661,7 +663,7 @@ x2col(int x) {
     	return LIMIT(x, 0, term.col-1);
     }

    -static int
    +int
     y2row(int y) {
     	y -= borderpx;
     	y /= xw.ch;
    @@ -669,7 +671,7 @@ y2row(int y) {
     	return LIMIT(y, 0, term.row-1);
     }

    -static int tlinelen(int y) {
    +int tlinelen(int y) {
     	int i = term.col;

     	if(term.line[y][i - 1].mode & ATTR_WRAP)
    @@ -681,7 +683,7 @@ static int tlinelen(int y) {
     	return i;
     }

    -static void
    +void
     selnormalize(void) {
     	int i;

    @@ -708,7 +710,7 @@ selnormalize(void) {
     		sel.ne.x = term.col - 1;
     }

    -static inline bool
    +bool
     selected(int x, int y) {
     	if(sel.type == SEL_RECTANGULAR)
     		return BETWEEN(y, sel.nb.y, sel.ne.y)
    @@ -2857,7 +2859,7 @@ xresize(int col, int row) {
     	xclear(0, 0, xw.w, xw.h);
     }

    -static inline ushort
    +ushort
     sixd_to_16bit(int x) {
     	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
     }
    @@ -3113,15 +3115,6 @@ xloadfonts(char *fontstr, double fontsize) {
     	FcPatternDestroy(pattern);
     }

    -int
    -xloadfontset(Font *f) {
    -	FcResult result;
    -
    -	if(!(f->set = FcFontSort(0, f->pattern, FcTrue, 0, &result)))
    -		return 1;
    -	return 0;
    -}
    -
     void
     xunloadfont(Font *f) {
     	XftFontClose(xw.dpy, f->match);
    @@ -3469,7 +3462,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
     		/* Nothing was found. */
     		if(i >= frclen) {
     			if(!font->set)
    -				xloadfontset(font);
    +				font->set = FcFontSort(0, font->pattern,
    +				                       FcTrue, 0, &fcres);
     			fcsets[0] = font->set;

     			/*
    @@ -3597,15 +3591,15 @@ xdrawcursor(void) {
     			case 4: /* Steady Underline */
     				XftDrawRect(xw.draw, &dc.col[defaultcs],
     						borderpx + curx * xw.cw,
    -						borderpx + (term.c.y + 1) * xw.ch - 1,
    -						xw.cw, 1);
    +						borderpx + (term.c.y + 1) * xw.ch - cursorthickness,
    +						xw.cw, cursorthickness);
     				break;
     			case 5: /* Blinking bar */
     			case 6: /* Steady bar */
     				XftDrawRect(xw.draw, &dc.col[defaultcs],
    -								borderpx + curx * xw.cw,
    -								borderpx + term.c.y * xw.ch,
    -								1, xw.ch);
    +						borderpx + curx * xw.cw,
    +						borderpx + term.c.y * xw.ch,
    +						cursorthickness, xw.ch);
     				break;
     		}
     	} else {
    @@ -3772,7 +3766,7 @@ focus(XEvent *ev) {
     	}
     }

    -static inline bool
    +bool
     match(uint mask, uint state) {
     	return mask == XK_ANY_MOD || mask == (state & ~ignoremod);
     }
    @@ -4078,7 +4072,7 @@ main(int argc, char *argv[]) {
     run:
     	setlocale(LC_CTYPE, "");
     	XSetLocaleModifiers("");
    -	tnew(cols? cols : 1, rows? rows : 1);
    +	tnew(MAX(cols, 1), MAX(rows, 1));
     	xinit();
     	selinit();
     	run();