diff options
author | Ron Yorston <rmy@pobox.com> | 2021-04-15 12:03:22 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-04-15 13:09:12 +0200 |
commit | d6e653d667bc1eb343014508a8bddb3dd4945f78 (patch) | |
tree | c628220816cde751484d83c9b5773fe504243f58 | |
parent | 38ae0f3e3e9490c5b8cc3b917c2d896404afddbe (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.c | 6 |
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') { |