Simplify filter handling

This commit is contained in:
Arun Prakash Jana 2017-08-25 14:10:57 +05:30
parent efc70f33e5
commit b854f396cf

70
nnn.c
View file

@ -930,21 +930,8 @@ filterentries(char *path)
curs_set(TRUE); curs_set(TRUE);
printprompt(ln); printprompt(ln);
while ((r = get_wch(ch)) != ERR) while ((r = get_wch(ch)) != ERR) {
if (r == OK) if (*ch == 127 /* handle DEL */ || *ch == KEY_DC || *ch == KEY_BACKSPACE) {
switch (*ch) {
case '\r': // with nonl(), this is ENTER key value
if (len == 1) {
cur = oldcur;
goto end;
}
if (matches(pln) == -1)
goto end;
redraw(path);
goto end;
case 127: // handle DEL
if (len == 1) { if (len == 1) {
cur = oldcur; cur = oldcur;
*ch = CONTROL('L'); *ch = CONTROL('L');
@ -957,13 +944,26 @@ filterentries(char *path)
wcstombs(ln, wln, REGEX_MAX); wcstombs(ln, wln, REGEX_MAX);
ndents = total; ndents = total;
if (matches(pln) == -1) { if (matches(pln) == -1)
printprompt(ln);
continue; continue;
}
redraw(path); redraw(path);
printprompt(ln); printprompt(ln);
break; continue;
}
if (r == OK) {
switch (*ch) {
case '\r': // with nonl(), this is ENTER key value
if (len == 1) {
cur = oldcur;
goto end;
}
if (matches(pln) == -1)
goto end;
redraw(path);
goto end;
case CONTROL('L'): case CONTROL('L'):
if (len == 1) if (len == 1)
cur = oldcur; // fallthrough cur = oldcur; // fallthrough
@ -986,32 +986,12 @@ filterentries(char *path)
redraw(path); redraw(path);
printprompt(ln); printprompt(ln);
} }
else } else {
switch (*ch) { if (len == 1)
case KEY_DC: // fallthrough cur = oldcur;
case KEY_BACKSPACE: goto end;
if (len == 1) { }
cur = oldcur; }
*ch = CONTROL('L');
goto end;
}
wln[--len] = '\0';
if (len == 1)
cur = oldcur;
wcstombs(ln, wln, REGEX_MAX);
ndents = total;
if (matches(pln) == -1)
continue;
redraw(path);
printprompt(ln);
break;
default:
if (len == 1)
cur = oldcur;
goto end;
}
end: end:
noecho(); noecho();
curs_set(FALSE); curs_set(FALSE);