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 <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2021-06-09 16:11:03 +01:00 committed by Denys Vlasenko
parent e2b9215868
commit f7ed0e8ae0

View File

@ -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;