st

Simple Terminal by suckless.org (fork)
git clone git://git.ckyln.com/st.git
Log | Files | Refs | README | LICENSE

commit db62cd8803afe4197054778778dcec004484d620
parent 741e344924427cd63a2147309ccae1580df33b53
Author: Cem Keylan <cem@ckyln.com>
Date:   Tue, 12 Nov 2019 05:48:50 +0300

use iswspace()/iswpunct() to find word delimiters

Diffstat:
Mconfig.h | 7++++---
Mst.c | 3++-
Mst.h | 2+-
3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/config.h b/config.h @@ -28,11 +28,12 @@ static float cwscale = 1.0; static float chscale = 1.0; /* - * word delimiter string + * all space and punctuation characters are considered word delimiters, unless + * listed here. * - * More advanced example: L" `'\"()[]{}" + * More advanced example: L"#$%&+,-./:=?_~" */ -wchar_t *worddelimiters = L" "; +wchar_t *extrawordchars = L"./:"; /* selection timeouts (in milliseconds) */ static unsigned int doubleclicktimeout = 300; diff --git a/st.c b/st.c @@ -16,6 +16,7 @@ #include <termios.h> #include <unistd.h> #include <wchar.h> +#include <wctype.h> #include "st.h" #include "win.h" @@ -42,7 +43,7 @@ #define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177') #define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) -#define ISDELIM(u) (u != 0 && wcschr(worddelimiters, u) != NULL) +#define ISDELIM(u) ((iswspace(u) || iswpunct(u)) && wcschr(extrawordchars, u) == NULL) #define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - \ term.scr + HISTSIZE + 1) % HISTSIZE] : \ term.line[(y) - term.scr]) diff --git a/st.h b/st.h @@ -117,7 +117,7 @@ char *xstrdup(char *); extern char *utmp; extern char *stty_args; extern char *vtiden; -extern char *worddelimiters; +extern wchar_t *extrawordchars; extern int allowaltscreen; extern char *termname; extern unsigned int tabspaces;