summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_thingy.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle/zle_thingy.c')
-rw-r--r--Src/Zle/zle_thingy.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c
index 2d4674785..c7092854a 100644
--- a/Src/Zle/zle_thingy.c
+++ b/Src/Zle/zle_thingy.c
@@ -678,7 +678,16 @@ bin_zle_flags(char *name, char **args, UNUSED(Options ops), UNUSED(char func))
else if (!strcmp(*flag, "keepsuffix"))
w->flags |= ZLE_KEEPSUFFIX;
*/
- else {
+ else if (!strcmp(*flag, "vichange")) {
+ if (invicmdmode()) {
+ startvichange(-1);
+ if (zmod.flags & (MOD_MULT|MOD_TMULT)) {
+ Param pm = (Param) paramtab->getnode(paramtab, "NUMERIC");
+ if (pm && pm->node.flags & PM_SPECIAL)
+ pm->node.flags &= ~PM_UNSET;
+ }
+ }
+ } else {
zwarnnam(name, "invalid flag `%s' given to zle -f", *flag);
ret = 1;
}