summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston2021-06-09 16:11:03 +0100
committerDenys Vlasenko2021-06-14 20:58:17 +0200
commitf7ed0e8ae0508fafe91ae3eb20663b9f7870adda (patch)
tree8c9b51bd5afb3be4cc53aec6d8f5444fbb7ae22b
parente2b9215868a3d72691e5bc0f887354254606447b (diff)
downloadbusybox-f7ed0e8ae0508fafe91ae3eb20663b9f7870adda.zip
busybox-f7ed0e8ae0508fafe91ae3eb20663b9f7870adda.tar.gz
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.c8
1 files 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;