summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_misc.c
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2014-11-17 22:47:59 +0100
committerOliver Kiddle <opk@zsh.org>2014-11-17 22:47:59 +0100
commit492b6cec28d70eb4ef34054f414dd1e80102e857 (patch)
tree4857f503061b5123cbfbab03dae4fc3bf11a2c1a /Src/Zle/zle_misc.c
parent0ea8f28e7b230315fe3fcca162a15258b618b0b2 (diff)
downloadzsh-492b6cec28d70eb4ef34054f414dd1e80102e857.tar.gz
zsh-492b6cec28d70eb4ef34054f414dd1e80102e857.zip
33635: adapt region to function as vim style visual selection mode
Diffstat (limited to 'Src/Zle/zle_misc.c')
-rw-r--r--Src/Zle/zle_misc.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index 3e6d1aaac..5996c485d 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -446,9 +446,12 @@ killregion(UNUSED(char **args))
if (mark > zlell)
mark = zlell;
if (mark > zlecs)
- forekill(mark - zlecs, CUT_RAW);
- else
+ forekill(mark - zlecs + invicmdmode(), CUT_RAW);
+ else {
+ if (invicmdmode())
+ INCCS();
backkill(zlecs - mark, CUT_FRONT|CUT_RAW);
+ }
return 0;
}
@@ -465,9 +468,9 @@ copyregionaskill(char **args)
if (mark > zlell)
mark = zlell;
if (mark > zlecs)
- cut(zlecs, mark - zlecs, 0);
+ cut(zlecs, mark - zlecs + invicmdmode(), 0);
else
- cut(mark, zlecs - mark, CUT_FRONT);
+ cut(mark, zlecs - mark + invicmdmode(), CUT_FRONT);
}
return 0;
}
@@ -1016,7 +1019,8 @@ quoteregion(UNUSED(char **args))
mark = zlecs;
zlecs = tmp;
}
- str = (ZLE_STRING_T)hcalloc((len = mark - zlecs) * ZLE_CHAR_SIZE);
+ str = (ZLE_STRING_T)hcalloc((len = mark - zlecs + invicmdmode()) *
+ ZLE_CHAR_SIZE);
ZS_memcpy(str, zleline + zlecs, len);
foredel(len, CUT_RAW);
str = makequote(str, &len);