summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Src/Zle/zle_thingy.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index dda4ec48d..d8a87e54d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-09-27  Oliver Kiddle  <opk@zsh.org>
+
+	* 39369 (tweaked cf 39371): Src/Zle/zle_thingy.c: when calling
+	an internal widget, set bindk because some widgets use it to
+	determine how they should act
+
 2016-09-27  Barton E. Schaefer  <schaefer@zsh.org>
 
 	* 39437: Src/exec.c: use list_pipe_pid in assignment for clarity
diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c
index 910715491..505aea065 100644
--- a/Src/Zle/zle_thingy.c
+++ b/Src/Zle/zle_thingy.c
@@ -756,6 +756,10 @@ bin_zle_call(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
     }
 
     t = rthingy(wname);
+    /* for internal widgets we set bindk except for when getting
+     * a vi range to detect a repeated key */
+    setbindk = setbindk ||
+	(t->widget && (t->widget->flags & (WIDGET_INT | ZLE_VIOPER)) == WIDGET_INT));
     ret = execzlefunc(t, args, setbindk);
     unrefthingy(t);
     if (saveflag)