From aea48508da7ad5ab990094caf93397c81019edbb Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sun, 12 Jan 2020 03:36:08 +0530 Subject: [PATCH] ^L at empty prompt shows last filter --- src/nnn.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 5029c80..81e6929 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -2119,10 +2119,25 @@ static int filterentries(char *path, char *lastname) goto end; } - if (*ch == CONTROL('L') && wln[1]) { - ln[REGEX_MAX - 1] = ln[1]; - wln[1] = '\0'; - len = 1; + if (*ch == CONTROL('L')) { + if (wln[1]) { + ln[REGEX_MAX - 1] = ln[1]; + wln[1] = '\0'; + len = 1; + } else if (ln[REGEX_MAX - 1]) { /* Show the previous filter */ + ln[1] = ln[REGEX_MAX - 1]; + ln[REGEX_MAX - 1] = '\0'; + len = mbstowcs(wln, ln, REGEX_MAX); + /* Go to the top, we don't know if the + hovered file will match the filter */ + cur = 0; + + if (matches(pln) != -1) + redraw(path); + + showfilter(ln); + continue; + } } else wln[--len] = '\0'; @@ -2138,21 +2153,6 @@ static int filterentries(char *path, char *lastname) case KEY_MOUSE: // fallthrough case 27: /* Exit filter mode on Escape */ goto end; - case KEY_UP: /* On the first Up, apply previous filter */ - if (len == 1 && ln[REGEX_MAX - 1]) { - ln[1] = ln[REGEX_MAX - 1]; - ln[REGEX_MAX - 1] = '\0'; - len = mbstowcs(wln, ln, REGEX_MAX); - /* Go to the top, we don't know if the - hovered file will match the filter */ - cur = 0; - - if (matches(pln) != -1) - redraw(path); - - showfilter(ln); - continue; - } } if (r == OK) {