nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 2d27902ac0e4f31c58d08aff3ba10f6a6d6af8e3
parent eea1b5da7da4ed9838e647dfae4d56aaba372ad8
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Tue, 31 Mar 2020 02:32:13 +0530

Quicker re-sort

Diffstat:
Msrc/nnn.c | 30++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -692,6 +692,7 @@ static haiku_nm_h haiku_hnd; #endif /* __GNUC__ */ /* Forward declarations */ +static size_t xstrlcpy(char *dest, const char *src, size_t n); static void redraw(char *path); static int spawn(char *file, char *arg1, char *arg2, const char *dir, uchar flag); static int (*nftw_fn)(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf); @@ -797,8 +798,11 @@ static void printmsg(const char *msg) static void printwait(const char *msg, int *presel) { printmsg(msg); - if (presel) + if (presel) { *presel = MSGWAIT; + if (ndents) + xstrlcpy(g_ctx[cfg.curctx].c_name, dents[cur].name, NAME_MAX + 1); + } } /* Kill curses and display error before exiting */ @@ -2307,8 +2311,8 @@ static int nextsel(int presel) //DPRINTF_D(c); //DPRINTF_S(keyname(c)); - if (c == ERR) - c = 0; + if (c == ERR && presel == MSGWAIT) + c = (cfg.filtermode || filterset()) ? FILTER : CONTROL('L'); else if (c == FILTER || c == CONTROL('L')) /* Clear previous filter when manually starting */ clearfilter(); @@ -5238,11 +5242,8 @@ nochange: } sel = nextsel(presel); - if (presel) { - if (presel == MSGWAIT) - statusbar(path); + if (presel) presel = 0; - } switch (sel) { #ifndef NOMOUSE @@ -5657,17 +5658,18 @@ nochange: } } - /* Save current */ - if (ndents) - copycurname(); - if (cfg.filtermode || filterset()) presel = FILTER; - if (r == 'd' || r == 'a') - goto begin; + if (ndents) { + copycurname(); - qsort(dents, ndents, sizeof(*dents), entrycmpfn); + if (r == 'd' || r == 'a') + goto begin; + + qsort(dents, ndents, sizeof(*dents), entrycmpfn); + move_cursor(ndents ? dentfind(lastname, ndents) : 0, 0); + } continue; case SEL_STATS: // fallthrough case SEL_CHMODX: