From f7ed0e8ae0508fafe91ae3eb20663b9f7870adda Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Wed, 9 Jun 2021 16:11:03 +0100 Subject: vi: ':r' should insert text after current line When no line number is specified ':read' should place the inserted text after the current line, not before. This used to be correct but was broken when commit 0c42a6b07 (vi: fix empty line range regression) revealed a bug in commit 7a8ceb4eb (vi: changes to line addresses for colon commands). function old new delta colon 3960 3952 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8) Total: -8 bytes Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- editors/vi.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/editors/vi.c b/editors/vi.c index beccef4..7c1877b 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -2998,12 +2998,10 @@ static void colon(char *buf) status_line_bold("No current filename"); goto ret; } - if (e < 0) { // no addr given- read after current line - q = begin_line(dot); - } else if (e == 0) { // user said ":0r foo" + if (e == 0) { // user said ":0r foo" q = text; - } else { // addr given- read after that line - q = next_line(find_line(e)); + } else { // read after given line or current line if none given + q = next_line(e > 0 ? find_line(e) : dot); // read after last line if (q == end-1) ++q; -- cgit v1.1