mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Do not reload dir on sort order change when filter is on
This commit is contained in:
parent
19940efd64
commit
4c0210ce2b
34
src/nnn.c
34
src/nnn.c
|
@ -2158,7 +2158,7 @@ static int filterentries(char *path, char *lastname)
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
if (*ch != '\t' && *ch != KEY_UP && *ch != KEY_DOWN) {
|
if (*ch != 27 && *ch != '\t' && *ch != KEY_UP && *ch != KEY_DOWN && *ch != CONTROL('T')) {
|
||||||
g_ctx[cfg.curctx].c_fltr[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
|
g_ctx[cfg.curctx].c_fltr[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
|
||||||
move_cursor(cur, 0);
|
move_cursor(cur, 0);
|
||||||
} else if (ndents)
|
} else if (ndents)
|
||||||
|
@ -3516,7 +3516,7 @@ static void show_help(const char *path)
|
||||||
"cS Disk usage%-14cA Apparent du\n"
|
"cS Disk usage%-14cA Apparent du\n"
|
||||||
"cz Size%-20ct Time\n"
|
"cz Size%-20ct Time\n"
|
||||||
"cv Version%-17cE Extension\n"
|
"cv Version%-17cE Extension\n"
|
||||||
"cR Reverse%-0c\n"
|
"9R ^T Reverse%-0c\n"
|
||||||
"1MISC\n"
|
"1MISC\n"
|
||||||
"9! ^] Shell%-17c; x Execute plugin\n"
|
"9! ^] Shell%-17c; x Execute plugin\n"
|
||||||
"c] Cmd prompt%-13c^P Pick plugin\n"
|
"c] Cmd prompt%-13c^P Pick plugin\n"
|
||||||
|
@ -4800,6 +4800,9 @@ nochange:
|
||||||
case SEL_MTIME: // fallthrough
|
case SEL_MTIME: // fallthrough
|
||||||
case SEL_VERSION: // fallthrough
|
case SEL_VERSION: // fallthrough
|
||||||
case SEL_REVERSE:
|
case SEL_REVERSE:
|
||||||
|
if (sel >= SEL_FSIZE && sel < SEL_REVERSE && entrycmpfn == &reventrycmp)
|
||||||
|
entrycmpfn = &entrycmp;
|
||||||
|
|
||||||
switch (sel) {
|
switch (sel) {
|
||||||
case SEL_MFLTR:
|
case SEL_MFLTR:
|
||||||
cfg.filtermode ^= 1;
|
cfg.filtermode ^= 1;
|
||||||
|
@ -4828,8 +4831,6 @@ nochange:
|
||||||
cfg.apparentsz = 0;
|
cfg.apparentsz = 0;
|
||||||
cfg.blkorder = 0;
|
cfg.blkorder = 0;
|
||||||
cfg.extnorder = 0;
|
cfg.extnorder = 0;
|
||||||
if (!cfg.sizeorder)
|
|
||||||
entrycmpfn = &entrycmp;
|
|
||||||
break;
|
break;
|
||||||
case SEL_ASIZE:
|
case SEL_ASIZE:
|
||||||
cfg.apparentsz ^= 1;
|
cfg.apparentsz ^= 1;
|
||||||
|
@ -4852,11 +4853,12 @@ nochange:
|
||||||
if (cfg.blkorder) {
|
if (cfg.blkorder) {
|
||||||
cfg.showdetail = 1;
|
cfg.showdetail = 1;
|
||||||
printptr = &printent_long;
|
printptr = &printent_long;
|
||||||
} else
|
}
|
||||||
entrycmpfn = &entrycmp;
|
|
||||||
cfg.mtimeorder = 0;
|
cfg.mtimeorder = 0;
|
||||||
cfg.sizeorder = 0;
|
cfg.sizeorder = 0;
|
||||||
cfg.extnorder = 0;
|
cfg.extnorder = 0;
|
||||||
|
clearfilter(); /* Reload directory */
|
||||||
|
endselection(); /* We are going to reload dir */
|
||||||
break;
|
break;
|
||||||
case SEL_EXTN:
|
case SEL_EXTN:
|
||||||
cfg.extnorder ^= 1;
|
cfg.extnorder ^= 1;
|
||||||
|
@ -4864,8 +4866,6 @@ nochange:
|
||||||
cfg.mtimeorder = 0;
|
cfg.mtimeorder = 0;
|
||||||
cfg.apparentsz = 0;
|
cfg.apparentsz = 0;
|
||||||
cfg.blkorder = 0;
|
cfg.blkorder = 0;
|
||||||
if (!cfg.extnorder)
|
|
||||||
entrycmpfn = &entrycmp;
|
|
||||||
break;
|
break;
|
||||||
case SEL_MTIME:
|
case SEL_MTIME:
|
||||||
cfg.mtimeorder ^= 1;
|
cfg.mtimeorder ^= 1;
|
||||||
|
@ -4873,28 +4873,26 @@ nochange:
|
||||||
cfg.apparentsz = 0;
|
cfg.apparentsz = 0;
|
||||||
cfg.blkorder = 0;
|
cfg.blkorder = 0;
|
||||||
cfg.extnorder = 0;
|
cfg.extnorder = 0;
|
||||||
if (!cfg.mtimeorder)
|
|
||||||
entrycmpfn = &entrycmp;
|
|
||||||
break;
|
break;
|
||||||
case SEL_VERSION:
|
case SEL_VERSION:
|
||||||
if (namecmpfn == &xstrverscasecmp) {
|
namecmpfn = (namecmpfn == &xstrverscasecmp) ? &xstricmp : &xstrverscasecmp;
|
||||||
namecmpfn = &xstricmp;
|
|
||||||
entrycmpfn = &entrycmp;
|
|
||||||
} else
|
|
||||||
namecmpfn = &xstrverscasecmp;
|
|
||||||
break;
|
break;
|
||||||
default: /* SEL_REVERSE */
|
default: /* SEL_REVERSE */
|
||||||
entrycmpfn = (entrycmpfn == &entrycmp) ? &reventrycmp : &entrycmp;
|
entrycmpfn = (entrycmpfn == &entrycmp) ? &reventrycmp : &entrycmp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
clearfilter();
|
if (cfg.filtermode)
|
||||||
endselection();
|
presel = FILTER;
|
||||||
|
|
||||||
/* Save current */
|
/* Save current */
|
||||||
if (ndents)
|
if (ndents)
|
||||||
copycurname();
|
copycurname();
|
||||||
goto begin;
|
|
||||||
|
/* If there's no filter, reload the directory */
|
||||||
|
if (!g_ctx[cfg.curctx].c_fltr[1])
|
||||||
|
goto begin;
|
||||||
|
break;
|
||||||
case SEL_STATS: // fallthrough
|
case SEL_STATS: // fallthrough
|
||||||
case SEL_CHMODX:
|
case SEL_CHMODX:
|
||||||
if (ndents) {
|
if (ndents) {
|
||||||
|
|
|
@ -197,6 +197,7 @@ static struct key bindings[] = {
|
||||||
{ 'v', SEL_VERSION },
|
{ 'v', SEL_VERSION },
|
||||||
/* Toggle reverse sort */
|
/* Toggle reverse sort */
|
||||||
{ 'R', SEL_REVERSE },
|
{ 'R', SEL_REVERSE },
|
||||||
|
{ CONTROL('T'), SEL_REVERSE },
|
||||||
/* Redraw window */
|
/* Redraw window */
|
||||||
{ CONTROL('L'), SEL_REDRAW },
|
{ CONTROL('L'), SEL_REDRAW },
|
||||||
{ KEY_F(5), SEL_REDRAW },
|
{ KEY_F(5), SEL_REDRAW },
|
||||||
|
|
Loading…
Reference in a new issue