summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Src/Zle/textobjects.c9
-rw-r--r--Src/Zle/zle.h7
-rw-r--r--Src/Zle/zle_keymap.c2
4 files changed, 19 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index fa807ffd7..d67ea71d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-01 Peter Stephenson <p.stephenson@samsung.com>
+
+ * 41191: Src/Zle/textobjects.c, Src/Zle/zle.h,
+ Src/Zle/zle_keymap.c: Check for .thingy when we check for a
+ particular thingy.
+
2017-05-30 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* 41177: Completion/Unix/Command/_nm: add support for macOS
diff --git a/Src/Zle/textobjects.c b/Src/Zle/textobjects.c
index 3db0781ff..bf83906f2 100644
--- a/Src/Zle/textobjects.c
+++ b/Src/Zle/textobjects.c
@@ -48,9 +48,10 @@ int
selectword(UNUSED(char **args))
{
int n = zmult;
- int all = (bindk == t_selectaword || bindk == t_selectablankword);
- int (*viclass)(ZLE_CHAR_T) = (bindk == t_selectaword ||
- bindk == t_selectinword) ? wordclass : blankwordclass;
+ int all = IS_THINGY(bindk, selectaword) ||
+ IS_THINGY(bindk, selectablankword);
+ int (*viclass)(ZLE_CHAR_T) = (IS_THINGY(bindk, selectaword) ||
+ IS_THINGY(bindk, selectinword)) ? wordclass : blankwordclass;
int sclass = viclass(zleline[zlecs]);
int doblanks = all && sclass;
@@ -288,7 +289,7 @@ selectargument(UNUSED(char **args))
free(stringaszleline(linein, wstarts[wcur], &zlecs, &tmpsz, &mark));
free(linein);
- if (bindk == t_selectinshellword) {
+ if (IS_THINGY(bindk, selectinshellword)) {
ZLE_CHAR_T *match = ZWS("`\'\"");
ZLE_CHAR_T *lmatch = ZWS("\'({"), *rmatch = ZWS("\')}");
ZLE_CHAR_T *ematch = match, *found;
diff --git a/Src/Zle/zle.h b/Src/Zle/zle.h
index 8f92e5611..07b310180 100644
--- a/Src/Zle/zle.h
+++ b/Src/Zle/zle.h
@@ -230,6 +230,13 @@ struct thingy {
/* DISABLED is (1<<0) */
#define TH_IMMORTAL (1<<1) /* can't refer to a different widget */
+/*
+ * Check if bindk refers to named thingy (a set of bare characters),
+ * also checking the special .thingy widget.
+ */
+#define IS_THINGY(bindk, name) \
+ ((bindk) == t_ ## name || (bindk) == t_D ## name)
+
/* command modifier prefixes */
struct modifier {
diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c
index 04eb70675..2e96ac780 100644
--- a/Src/Zle/zle_keymap.c
+++ b/Src/Zle/zle_keymap.c
@@ -961,7 +961,7 @@ bin_bindkey_meta(char *name, char *kmname, Keymap km, UNUSED(char **argv), UNUSE
m[0] = i;
metafy(m, 1, META_NOALLOC);
fn = keybind(km, m, &str);
- if(fn == t_selfinsert || fn == t_undefinedkey)
+ if(IS_THINGY(fn, selfinsert) || fn == t_undefinedkey)
bindkey(km, m, refthingy(Th(metabind[i - 128])), NULL);
}
return 0;