summaryrefslogtreecommitdiff
path: root/editors/vi.c
diff options
context:
space:
mode:
authorRon Yorston2021-04-15 12:03:22 +0100
committerDenys Vlasenko2021-04-15 13:09:12 +0200
commitd6e653d667bc1eb343014508a8bddb3dd4945f78 (patch)
treec628220816cde751484d83c9b5773fe504243f58 /editors/vi.c
parent38ae0f3e3e9490c5b8cc3b917c2d896404afddbe (diff)
downloadbusybox-d6e653d667bc1eb343014508a8bddb3dd4945f78.zip
busybox-d6e653d667bc1eb343014508a8bddb3dd4945f78.tar.gz
vi: don't move cursor when yanking whole lines
When whole lines are yanked using 'yy' or 'Y' vi doesn't change the cursor position. Make BusyBox vi do the same. function old new delta do_cmd 4776 4786 +10 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 10/0) Total: 10 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors/vi.c')
-rw-r--r--editors/vi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/editors/vi.c b/editors/vi.c
index d20481f..780c812 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3934,6 +3934,7 @@ static void do_cmd(int c)
# endif
if (c == 'y' || c == 'Y')
yf = YANKONLY;
+ save_dot = dot;
#endif
// determine range, and whether it spans lines
buftype = find_range(&p, &q, c);
@@ -3951,6 +3952,11 @@ static void do_cmd(int c)
dot_begin();
dot_skip_over_ws();
}
+#if ENABLE_FEATURE_VI_YANKMARK
+ else /* (c == 'y' || c == 'Y') */ {
+ dot = save_dot;
+ }
+#endif
}
// if CHANGING, not deleting, start inserting after the delete
if (c == 'c') {