Merge branch 'master' of ssh://suckless.org/gitrepos/st - st - Simple Terminal
git clone git://r-36.net/st
Log
Files
Refs
README
LICENSE
---
commit 23ed12857f113603b689521d3f6e40ff954d25bb
parent 9eb70a2d3ecbd96a92e5f824868500baba74b688
Author: Roberto E. Vargas Caballero 
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(-)
---
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();