aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-08-21 14:02:43 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2021-08-22 00:09:57 +0200
commit08ad934ac4e341c35497497f4d617a514de524a1 (patch)
treeb67d433923e9aa3a18c818c7c23aaca90ee98fcf
parent4357569fdc7bc482dea0ef0bff57a70e7f06523c (diff)
downloadbusybox-w32-08ad934ac4e341c35497497f4d617a514de524a1.tar.gz
busybox-w32-08ad934ac4e341c35497497f4d617a514de524a1.tar.bz2
busybox-w32-08ad934ac4e341c35497497f4d617a514de524a1.zip
vi: searches in colon commands should wrap
The '/' and '?' search commands wrap to the other end of the buffer if the search target isn't found. When searches are used to specify addresses in colon commands they should do the same. (In traditional vi and vim this behaviour is controlled by the 'wrapscan' option. BusyBox vi doesn't have this option and always uses the default behaviour.) function old new delta colon 4033 4077 +44 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 44/0) Total: 44 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/vi.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/editors/vi.c b/editors/vi.c
index 508477954..eee5e0ed2 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -2527,8 +2527,13 @@ static char *get_one_address(char *p, int *result) // get colon addr, if present
2527 dir = ((unsigned)BACK << 1) | FULL; 2527 dir = ((unsigned)BACK << 1) | FULL;
2528 } 2528 }
2529 q = char_search(q, last_search_pattern + 1, dir); 2529 q = char_search(q, last_search_pattern + 1, dir);
2530 if (q == NULL) 2530 if (q == NULL) {
2531 return NULL; 2531 // no match, continue from other end of file
2532 q = char_search(dir > 0 ? text : end - 1,
2533 last_search_pattern + 1, dir);
2534 if (q == NULL)
2535 return NULL;
2536 }
2532 new_addr = count_lines(text, q); 2537 new_addr = count_lines(text, q);
2533 } 2538 }
2534# endif 2539# endif