From 8e9c4ec88b05f16996e0e686422f6ddc86ce9d2a Mon Sep 17 00:00:00 2001
From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Sat, 30 May 2020 23:25:01 +0530
Subject: [PATCH] F5 to redraw (even with filter)

---
 src/nnn.c | 24 ++++++++++--------------
 src/nnn.h |  1 +
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c
index e7ec31d..69cf19d 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2569,18 +2569,23 @@ static int filterentries(char *path, char *lastname)
 			} else
 				continue;
 			// fallthrough
+		case KEY_F(5): // fallthrough
 		case CONTROL('L'):
-			if (*ch == CONTROL('L')) {
+			if (*ch == CONTROL('L') || *ch == KEY_F(5)) {
 				if (wln[1]) {
 					ln[REGEX_MAX - 1] = ln[1];
 					ln[1] = wln[1] = '\0';
 					len = 1;
 					ndents = total;
-				} else if (ln[REGEX_MAX - 1]) { /* Show the previous filter */
+				} else if (*ch == CONTROL('L') && 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);
 				}
+
+				if (*ch == KEY_F(5))
+					goto end;
 			}
 
 			/* Go to the top, we don't know if the hovered file will match the filter */
@@ -2597,17 +2602,8 @@ static int filterentries(char *path, char *lastname)
 #endif
 		case 27: /* Exit filter mode on Escape and Alt+key */
 			if (handle_alt_key(ch) != ERR) {
-				if (*ch == 27) { /* Handle Alt + Esc */
-					if (wln[1]) {
-						ln[REGEX_MAX - 1] = ln[1];
-						ln[1] = wln[1] = '\0';
-						ndents = total;
-						*ch = CONTROL('L');
-					}
-				} else {
-					unget_wch(*ch);
-					*ch = CONTROL('S');
-				}
+				unget_wch(*ch);
+				*ch = CONTROL('S');
 			}
 			goto end;
 		}
@@ -4145,7 +4141,7 @@ static void show_help(const char *path)
 		"a1-4  Context 1-4%-7c(Sh)Tab  Cycle context\n"
 		  "c/  Filter%-17c^N  Toggle type-to-nav\n"
 		"aEsc  Exit prompt%-12c^L  Redraw/clear prompt\n"
-		  "c0  Lock%-14cAlt+Esc  Clear filter, redraw\n"
+		  "c0  Lock%-19cF5  Redraw\n"
 		  "c?  Help, conf%-13c^G  QuitCD\n"
 		  "cq  Quit context%-7c^Q (Q)  Quit (with err)\n"
 		"1FILES\n"
diff --git a/src/nnn.h b/src/nnn.h
index a403f29..81e5c1a 100644
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -199,6 +199,7 @@ static struct key bindings[] = {
 	{ CONTROL('T'),   SEL_SORT },
 	/* Redraw window */
 	{ CONTROL('L'),   SEL_REDRAW },
+	{ KEY_F(5),       SEL_REDRAW },
 	/* Select current file path */
 	{ CONTROL('J'),   SEL_SEL },
 	{ ' ',            SEL_SEL },