Add config option for word delimiters - dmenu - dynamic menu | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 120e8401074254d39be916ad83bafda9ef25e6a9 | |
parent 32f2564dbbbf5aeafb7190a3d35066142f34448f | |
Author: Quentin Rameau <[email protected]> | |
Date: Sat, 19 Dec 2015 09:32:55 +0100 | |
Add config option for word delimiters | |
Let the user configure word boundaries other than ' ', only works with | |
the portable character set. | |
Diffstat: | |
M config.def.h | 6 ++++++ | |
M dmenu.c | 6 ++++-- | |
2 files changed, 10 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
@@ -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 | |
@@ -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 */ |