From 0c4e9b84dadadb842bfac3164dbca7d189bcf7f5 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sun, 9 Mar 2025 21:08:48 +0100 Subject: [PATCH] fix search function --- display.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/display.c b/display.c index c72896c..44275fa 100644 --- a/display.c +++ b/display.c @@ -648,6 +648,8 @@ char *filewindow (char *name, window_t *win) case KEY_PPAGE: case KEY_SLEFT: case 'I': + skip = GETSKIP (skip, sskip); + sskip = -1; for (i = 0; i < 3 * win->ysize / 4; i++) { if (skip > 0) { skip--; @@ -657,6 +659,8 @@ char *filewindow (char *name, window_t *win) case KEY_NPAGE: case KEY_SRIGHT: case 'K': + skip = GETSKIP (skip, sskip); + sskip = -1; for (i = 0; i < 3 * win->ysize / 4; i++) { if (skip + win->ysize < len) { skip++; @@ -680,12 +684,16 @@ char *filewindow (char *name, window_t *win) break; case 'i': case KEY_UP: + skip = GETSKIP (skip, sskip); + sskip = -1; if (skip > 0) { skip--; } break; case 'k': case KEY_DOWN: + skip = GETSKIP (skip, sskip); + sskip = -1; if (skip + win->ysize < len) { skip++; } @@ -694,9 +702,11 @@ char *filewindow (char *name, window_t *win) mode = (mode) ? 0 : 1; break; case 'n': - sskip = _find (lines, len, GETSKIP (skip, sskip) + 1, search); - if (sskip == -1) { - sskip = _find (lines, len, 0, search); + if (search) { + sskip = _find (lines, len, GETSKIP (skip, sskip) + 1, search); + if (sskip == -1) { + sskip = _find (lines, len, 0, search); + } } break; } -- 2.30.2