about summary refs log tree commit diff
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.tar.xz
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);