summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-04-15 12:03:22 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2021-04-15 13:09:12 +0200
commitd6e653d667bc1eb343014508a8bddb3dd4945f78 (patch)
treec628220816cde751484d83c9b5773fe504243f58
parent38ae0f3e3e9490c5b8cc3b917c2d896404afddbe (diff)
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>
-rw-r--r--editors/vi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/editors/vi.c b/editors/vi.c
index d20481fbd..780c81234 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') {