use iswspace()/iswpunct() to find word delimiters - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit add0211522737b79dad990ccd65c8af63b5cc1dd
 (DIR) parent d5efd256aa3840476579a27293ef1fb92a4b51e7
 (HTM) Author: Lauri Tirkkonen <lotheac@iki.fi>
       Date:   Wed, 13 Mar 2019 17:15:04 +0200
       
       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.
       
       Diffstat:
         M config.def.h                        |       7 ++++---
         M st.c                                |       3 ++-
         M st.h                                |       2 +-
       
       3 files changed, 7 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.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;
 (DIR) 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"
       @@ -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,
 (DIR) diff --git a/st.h b/st.h
       @@ -114,7 +114,7 @@ char *xstrdup(char *);
        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;