diff options
author | Ron Yorston <rmy@pobox.com> | 2021-06-09 16:11:03 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-06-14 20:58:17 +0200 |
commit | f7ed0e8ae0508fafe91ae3eb20663b9f7870adda (patch) | |
tree | 8c9b51bd5afb3be4cc53aec6d8f5444fbb7ae22b | |
parent | e2b9215868a3d72691e5bc0f887354254606447b (diff) |
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>
-rw-r--r-- | editors/vi.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/editors/vi.c b/editors/vi.c index beccef4b4..7c1877bb2 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; |