st-flexipatch

My st-flexipatch configuration
git clone git://git.ethandl.dev/st-flexipatch
Log | Files | Refs | README | LICENSE

commit f86b641b5f486ba8a31d0cdd8a15c05b0b0f940b
parent 42f401b428a9eae686a34e2f1ad9ac2b4ca003d9
Author: bakkeby <bakkeby@gmail.com>
Date:   Tue, 24 Mar 2020 13:41:19 +0100

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

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

diff --git a/config.def.h b/config.def.h @@ -42,11 +42,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" @@ -49,7 +50,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) enum term_mode { MODE_WRAP = 1 << 0, diff --git a/st.h b/st.h @@ -133,7 +133,7 @@ int borderpx; extern char *utmp; extern char *stty_args; extern char *vtiden; -extern wchar_t *worddelimiters; +extern wchar_t *extrawordchars; extern int allowaltscreen; extern char *termname; extern unsigned int tabspaces;