]> git.armaanb.net Git - dmenu.git/commitdiff
Add config option for word delimiters
authorQuentin Rameau <quinq@fifth.space>
Sat, 19 Dec 2015 08:32:55 +0000 (09:32 +0100)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 19 Dec 2015 19:32:14 +0000 (20:32 +0100)
Let the user configure word boundaries other than ' ', only works with
the portable character set.

config.def.h
dmenu.c

index a9122f73add3418911a1b8a4b58c7b95796c43cb..8db1ddadfa328a88293fde2ec81ddef6f70d74e9 100644 (file)
@@ -15,3 +15,9 @@ static const char *outbgcolor  = "#00ffff";
 static const char *outfgcolor  = "#000000";
 /* -l option; if nonzero, dmenu uses vertical list with given number of lines */
 static unsigned int lines      = 0;
+
+/*
+ * Characters not considered part of a word while deleting words
+ * for example: " /?\"&[]"
+ */
+static const char worddelimiters[] = " ";
diff --git a/dmenu.c b/dmenu.c
index a07f8e32145faae2a9ca75dfab9c6681617ea148..e0c2f80444f9fb8b3ad4f864d16e8b358117b29e 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -314,9 +314,11 @@ keypress(XKeyEvent *ev)
                        insert(NULL, 0 - cursor);
                        break;
                case XK_w: /* delete word */
-                       while (cursor > 0 && text[nextrune(-1)] == ' ')
+                       while (cursor > 0 && strchr(worddelimiters,
+                              text[nextrune(-1)]))
                                insert(NULL, nextrune(-1) - cursor);
-                       while (cursor > 0 && text[nextrune(-1)] != ' ')
+                       while (cursor > 0 && !strchr(worddelimiters,
+                              text[nextrune(-1)]))
                                insert(NULL, nextrune(-1) - cursor);
                        break;
                case XK_y: /* paste selection */