Merge branch 'master' of ssh://suckless.org/gitrepos/st - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 23ed12857f113603b689521d3f6e40ff954d25bb
 (DIR) parent 9eb70a2d3ecbd96a92e5f824868500baba74b688
 (HTM) 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:
         M config.def.h                        |       5 +++++
         M st.c                                |      48 ++++++++++++++-----------------
       
       2 files changed, 26 insertions(+), 27 deletions(-)
       ---
 (DIR) 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
         */
 (DIR) 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();