From add0211522737b79dad990ccd65c8af63b5cc1dd Mon Sep 17 00:00:00 2001
From: Lauri Tirkkonen <lotheac@iki.fi>
Date: Wed, 13 Mar 2019 17:15:04 +0200
Subject: use iswspace()/iswpunct() to find word delimiters

this inverts the configuration logic: you no longer provide a list of
delimiters -- all space and punctuation characters are considered
delimiters, unless listed in extrawordchars.
---
 st.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'st.c')

diff --git a/st.c b/st.c
index 812f30c..c383b43 100644
--- 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"
@@ -41,7 +42,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,
-- 
cgit v1.2.3