commit dc3e5f1061ca3d437a8acacbb8655a2afd131724
Author: FRIGN <[email protected]>
Date:   Mon Jun 1 19:22:26 2015 +0200

    Add configwordbreak patches for 0.4, 0.4.1 and 0.5 (st)
    
    and a small note on the fact that all versions after 0.5,
    namely the git-version as of now, have this feature already
    implemented.

diff --git a/st.suckless.org/patches/configwordbreak.md 
b/st.suckless.org/patches/configwordbreak.md
index 4df6a49..597fa40 100644
--- a/st.suckless.org/patches/configwordbreak.md
+++ b/st.suckless.org/patches/configwordbreak.md
@@ -6,6 +6,7 @@ Description
 
 This is a patch to allow configuring which characters are used as
 word boundaries for double click selection (instead of just ' ').
+This feature is already implemented in all versions later than 0.5.
 
 Usage
 -----
@@ -16,11 +17,13 @@ example config.h
 
 Download
 --------
-* [st-0.3-configwordbreak.diff][0]
-
-[0]: st-0.3-configwordbreak.diff
+* [st-0.3-configwordbreak.diff](st-0.3-configwordbreak.diff)
+* [st-0.4-configwordbreak.diff](st-0.4-configwordbreak.diff)
+* [st-0.4.1-configwordbreak.diff](st-0.4.1-configwordbreak.diff)
+* [st-0.5-configwordbreak.diff](st-0.5-configwordbreak.diff)
 
 Author
 ------
 
  * Stephen Paul Weber - singpolyma
+ * FRIGN - [email protected] (st-0.4, st-0.4.1, st-0.5 ports)
diff --git a/st.suckless.org/patches/st-0.3-configwordbreak.diff 
b/st.suckless.org/patches/st-0.3-configwordbreak.diff
index 7d3ebe9..d8193e3 100644
--- a/st.suckless.org/patches/st-0.3-configwordbreak.diff
+++ b/st.suckless.org/patches/st-0.3-configwordbreak.diff
@@ -1,3 +1,5 @@
+diff --git a/config.def.h b/config.def.h
+index 1ba6d8e..3ddbe10 100644
 --- a/config.def.h
 +++ b/config.def.h
 @@ -13,7 +13,7 @@ static unsigned int tripleclicktimeout = 600;
@@ -9,9 +11,11 @@
  
  /* Terminal colors (16 first used in escape sequence) */
  static const char *colorname[] = {
+diff --git a/st.c b/st.c
+index 8e0df08..2998468 100644
 --- a/st.c
 +++ b/st.c
-@@ -277,6 +277,7 @@ typedef struct {
+@@ -279,6 +279,7 @@ typedef struct {
  } DC;
  
  static void die(const char *, ...);
@@ -19,7 +23,7 @@
  static void draw(void);
  static void redraw(void);
  static void drawregion(int, int, int, int);
-@@ -835,12 +836,12 @@ brelease(XEvent *e) {
+@@ -813,12 +814,12 @@ brelease(XEvent *e) {
                                /* double click to select word */
                                sel.bx = sel.ex;
                                while(sel.bx > 0 && 
term.line[sel.ey][sel.bx-1].state & GLYPH_SET &&
@@ -34,7 +38,7 @@
                                        sel.ex++;
                                }
                                sel.e.x = sel.ex;
-@@ -888,6 +889,17 @@ die(const char *errstr, ...) {
+@@ -866,6 +867,17 @@ die(const char *errstr, ...) {
        exit(EXIT_FAILURE);
  }
  
diff --git a/st.suckless.org/patches/st-0.4-configwordbreak.diff 
b/st.suckless.org/patches/st-0.4-configwordbreak.diff
new file mode 100644
index 0000000..578b325
--- /dev/null
+++ b/st.suckless.org/patches/st-0.4-configwordbreak.diff
@@ -0,0 +1,58 @@
+diff --git a/config.def.h b/config.def.h
+index 693bdbd..cba3754 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -21,7 +21,7 @@ static unsigned int actionfps = 30;
+ static char termname[] = "st-256color";
+ 
+ static unsigned int tabspaces = 8;
+-
++#define WORD_BREAK " "
+ 
+ /* Terminal colors (16 first used in escape sequence) */
+ static const char *colorname[] = {
+diff --git a/st.c b/st.c
+index 8b1fc56..8ed395c 100644
+--- a/st.c
++++ b/st.c
+@@ -294,6 +294,7 @@ typedef struct {
+ } DC;
+ 
+ static void die(const char *, ...);
++static bool is_word_break(char);
+ static void draw(void);
+ static void redraw(int);
+ static void drawregion(int, int, int, int);
+@@ -920,12 +921,12 @@ brelease(XEvent *e) {
+                               /* double click to select word */
+                               sel.bx = sel.ex;
+                               while(sel.bx > 0 && 
term.line[sel.ey][sel.bx-1].state & GLYPH_SET &&
+-                                              
term.line[sel.ey][sel.bx-1].c[0] != ' ') {
++                                              
!is_word_break(term.line[sel.ey][sel.bx-1].c[0])) {
+                                       sel.bx--;
+                               }
+                               sel.b.x = sel.bx;
+                               while(sel.ex < term.col-1 && 
term.line[sel.ey][sel.ex+1].state & GLYPH_SET &&
+-                                              
term.line[sel.ey][sel.ex+1].c[0] != ' ') {
++                                              
!is_word_break(term.line[sel.ey][sel.ex+1].c[0])) {
+                                       sel.ex++;
+                               }
+                               sel.e.x = sel.ex;
+@@ -974,6 +975,17 @@ die(const char *errstr, ...) {
+       exit(EXIT_FAILURE);
+ }
+ 
++bool
++is_word_break(char c) {
++      static char *word_break = WORD_BREAK;
++      char *s = word_break;
++      while(*s) {
++              if(*s == c) return true;
++              s++;
++      }
++      return false;
++}
++
+ void
+ execsh(void) {
+       char **args;
diff --git a/st.suckless.org/patches/st-0.4.1-configwordbreak.diff 
b/st.suckless.org/patches/st-0.4.1-configwordbreak.diff
new file mode 100644
index 0000000..6ee66eb
--- /dev/null
+++ b/st.suckless.org/patches/st-0.4.1-configwordbreak.diff
@@ -0,0 +1,57 @@
+diff --git a/config.def.h b/config.def.h
+index d1c20bd..d8db06d 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -24,7 +24,7 @@ static unsigned int actionfps = 30;
+ static char termname[] = "st-256color";
+ 
+ static unsigned int tabspaces = 8;
+-
++#define WORD_BREAK " "
+ 
+ /* Terminal colors (16 first used in escape sequence) */
+ static const char *colorname[] = {
+diff --git a/st.c b/st.c
+index 686ed5d..4f5bb05 100644
+--- a/st.c
++++ b/st.c
+@@ -288,6 +288,7 @@ typedef struct {
+ } DC;
+ 
+ static void die(const char *, ...);
++static bool is_word_break(char);
+ static void draw(void);
+ static void redraw(int);
+ static void drawregion(int, int, int, int);
+@@ -933,11 +934,11 @@ brelease(XEvent *e) {
+                       } else if(TIMEDIFF(now, sel.tclick1) <= 
doubleclicktimeout) {
+                               /* double click to select word */
+                               sel.bx = sel.ex;
+-                              while(sel.bx > 0 && 
term.line[sel.ey][sel.bx-1].c[0] != ' ') {
++                              while(sel.bx > 0 && 
!is_word_break(term.line[sel.ey][sel.bx-1].c[0])) {
+                                       sel.bx--;
+                               }
+                               sel.b.x = sel.bx;
+-                              while(sel.ex < term.col-1 && 
term.line[sel.ey][sel.ex+1].c[0] != ' ') {
++                              while(sel.ex < term.col-1 && 
!is_word_break(term.line[sel.ey][sel.ex+1].c[0])) {
+                                       sel.ex++;
+                               }
+                               sel.e.x = sel.ex;
+@@ -986,6 +987,17 @@ die(const char *errstr, ...) {
+       exit(EXIT_FAILURE);
+ }
+ 
++bool
++is_word_break(char c) {
++      static char *word_break = WORD_BREAK;
++      char *s = word_break;
++      while(*s) {
++              if(*s == c) return true;
++              s++;
++      }
++      return false;
++}
++
+ void
+ execsh(void) {
+       char **args;
diff --git a/st.suckless.org/patches/st-0.5-configwordbreak.diff 
b/st.suckless.org/patches/st-0.5-configwordbreak.diff
new file mode 100644
index 0000000..f30155e
--- /dev/null
+++ b/st.suckless.org/patches/st-0.5-configwordbreak.diff
@@ -0,0 +1,52 @@
+diff --git a/config.def.h b/config.def.h
+index 58b470e..8a8d968 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -47,7 +47,7 @@ static int bellvolume = 0;
+ static char termname[] = "st-256color";
+ 
+ static unsigned int tabspaces = 8;
+-
++#define WORD_BREAK " "
+ 
+ /* Terminal colors (16 first used in escape sequence) */
+ static const char *colorname[] = {
+diff --git a/st.c b/st.c
+index 392f12d..6a32d03 100644
+--- a/st.c
++++ b/st.c
+@@ -343,6 +343,7 @@ typedef struct {
+ } DC;
+ 
+ static void die(const char *, ...);
++static bool is_word_break(char);
+ static void draw(void);
+ static void redraw(int);
+ static void drawregion(int, int, int, int);
+@@ -751,7 +752,7 @@ selsnap(int mode, int *x, int *y, int direction) {
+                */
+               if(direction > 0) {
+                       i = term.col;
+-                      while(--i > 0 && term.line[*y][i].c[0] == ' ')
++                      while(--i > 0 && is_word_break(term.line[*y][i].c[0]))
+                               /* nothing */;
+                       if(i > 0 && i < *x)
+                               *x = term.col - 1;
+@@ -1141,6 +1142,17 @@ die(const char *errstr, ...) {
+       exit(EXIT_FAILURE);
+ }
+ 
++bool
++is_word_break(char c) {
++      static char *word_break = WORD_BREAK;
++      char *s = word_break;
++      while(*s) {
++              if(*s == c) return true;
++              s++;
++      }
++      return false;
++}
++
+ void
+ execsh(void) {
+       char **args;


Reply via email to