diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2018-10-28 01:52:07 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2018-10-28 01:52:07 +0530 |
commit | c820e0c9f9be00411d8a8a0170e3738a48988ead (patch) | |
tree | 95d1695f112507b027770d7e7061bc7538ae4975 | |
parent | 80e5cdfe8d634fc661855e0654d917503b1c1759 (diff) | |
download | nnn-c820e0c9f9be00411d8a8a0170e3738a48988ead.tar.gz |
Use ^L to clear filter prompt
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | nnn.1 | 9 | ||||
-rw-r--r-- | nnn.c | 20 |
3 files changed, 22 insertions, 15 deletions
@@ -265,10 +265,10 @@ Help & settings, file details, media info and archive listing are shown in the P Filters support regexes to instantly (search-as-you-type) list the matching entries in the current directory. -There are 3 ways to reset a filter: -- pressing <kbd>^L</kbd> (at the new/rename prompt <kbd>^L</kbd> followed by <kbd>Enter</kbd> discards all changes and exits prompt) -- a search with no matches -- an extra backspace at the filter prompt (like vi) +Ways to exit filter prompt: +- press <kbd>^L</kbd> to clear filter followed by <kbd>Bksp</kbd> (to clear the filter symbol, like vi) + - at other prompts <kbd>^L</kbd> followed by <kbd>Enter</kbd> discards all changes and exits prompt +- run a search with no matches and press <kbd>Enter</kbd> Common use cases: - to list all matches starting with the filter expression, start the expression with a `^` (caret) symbol @@ -188,14 +188,13 @@ instructions. Filters support regexes to instantly (search-as-you-type) list the matching entries in the current directory. .Pp -There are 3 ways to reset a filter: +Ways to exit filter prompt: .Pp -(1) pressing \fI^L\fR (at the new/rename prompt \fI^L\fR followed by \fIEnter\fR -discards all changes and exits prompt), +(1) press \fI^L\fR to clear filter followed by \fIBksp\fR (to clear the filter symbol, like vi) .br -(2) a search with no matches or + - at other prompts \fI^L\fR followed by \fIEnter\fR discards all changes and exits prompt .br -(3) an extra backspace at the filter prompt (like vi). +(2) run a search with no matches and press \fIEnter\fR .Pp Common use cases: .Pp @@ -1096,14 +1096,24 @@ static int filterentries(char *path) printprompt(ln); while ((r = get_wch(ch)) != ERR) { - if (*ch == 127 /* handle DEL */ || *ch == KEY_DC || *ch == KEY_BACKSPACE || *ch == '\b') { - if (len == 1) { + switch (*ch) { + case KEY_DC: // fallthrough + case KEY_BACKSPACE: // fallthrough + case '\b': // fallthrough + case CONTROL('L'): // fallthrough + case 127: /* handle DEL */ + if (len == 1 && *ch != CONTROL('L')) { cur = oldcur; *ch = CONTROL('L'); goto end; } - wln[--len] = '\0'; + if (*ch == CONTROL('L')) + while (len > 1) + wln[--len] = '\0'; + else + wln[--len] = '\0'; + if (len == 1) cur = oldcur; @@ -1114,9 +1124,7 @@ static int filterentries(char *path) printprompt(ln); continue; - } - - if (*ch == 27) { /* Exit filter mode on Escape */ + case 27: /* Exit filter mode on Escape */ cur = oldcur; *ch = CONTROL('L'); goto end; |