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 <[email protected]>
---
 editors/vi.c | 6 ++++++
 1 file changed, 6 insertions(+)

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') {
-- 
2.30.2

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to