diff --git a/misc/auto-completion/fish/nnn.fish b/misc/auto-completion/fish/nnn.fish index f597886e..96348bd7 100644 --- a/misc/auto-completion/fish/nnn.fish +++ b/misc/auto-completion/fish/nnn.fish @@ -28,7 +28,7 @@ complete -c nnn -s R -d 'disable rollover at edges' complete -c nnn -s s -r -d 'load session by name' -x -a '@\t"last session" (ls $sessions_dir)' complete -c nnn -s S -d 'start in disk usage analyzer mode' complete -c nnn -s t -d 'disable dir auto-select' -complete -c nnn -s v -d 'show program version and exit' -complete -c nnn -s V -d 'use version compare to sort files' +complete -c nnn -s v -d 'use version compare to sort files' +complete -c nnn -s V -d 'show program version and exit' complete -c nnn -s x -d 'notis, sel to system clipboard' complete -c nnn -s h -d 'show program help' diff --git a/misc/auto-completion/zsh/_nnn b/misc/auto-completion/zsh/_nnn index a8b5f238..7aa9ba40 100644 --- a/misc/auto-completion/zsh/_nnn +++ b/misc/auto-completion/zsh/_nnn @@ -26,8 +26,8 @@ args=( '(-s)-s[load session]:session name' '(-S)-S[start in disk usage analyzer mode]' '(-t)-t[disable dir auto-select]' - '(-v)-v[show program version and exit]' - '(-V)-V[use version compare to sort files]' + '(-v)-v[use version compare to sort files]' + '(-V)-V[show program version and exit]' '(-x)-x[notis, sel to system clipboard]' '(-h)-h[show program help]' '*:filename:_files' diff --git a/nnn.1 b/nnn.1 index 33fbb656..d4a58e19 100644 --- a/nnn.1 +++ b/nnn.1 @@ -96,10 +96,10 @@ supports the following options: disable directory auto-select in navigate-as-you-type mode .Pp .Fl v - show version and exit + use case-insensitive version compare to sort files .Pp .Fl V - use case-insensitive version compare to sort files + show version and exit .Pp .Fl x show notis on selection cp, mv, rm completion; copy path to system clipboard on select diff --git a/src/nnn.c b/src/nnn.c index 5ab9393e..fc244ae3 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -3517,8 +3517,8 @@ static void show_help(const char *path) "1FILES\n" "b^O Open with...%-12cn Create new/link\n" "cD File details%-12cd Detail view toggle\n" - "ca Sel all%-13c^R F2 Rename/duplicate\n" - "5Space ^J Sel toggle%-14cr Batch rename\n" + "cr Batch rename%-8c^R F2 Rename/duplicate\n" + "5Space ^J Sel toggle%-14ca Sel all\n" "9m ^K Sel range, clear%-8cM List sel\n" "cP Copy sel here%-11cK Edit sel\n" "cV Move sel here%-11cw Copy/move sel as\n" @@ -3526,9 +3526,9 @@ static void show_help(const char *path) "cf Archive%-14co ^F Archive ops\n" "ce Edit in EDITOR%-10cp Open in PAGER\n" "1ORDER TOGGLES\n" - "cA Apparent du%-13cS du\n" + "cS Disk usage%-14cA Apparent du\n" "cz Size%-20ct Time\n" - "cE Extension%-1c\n" + "cv version%-17cE Extension\n" "1MISC\n" "9! ^] Shell%-17c; x Plugin key\n" "cC Execute file%-9ci ^V Pick plugin\n" @@ -4237,7 +4237,7 @@ static void redraw(char *path) } if (ndents) { - char sort[] = "\0 "; + char sort[] = "\0 \0"; pEntry pent = &dents[cur]; if (cfg.mtimeorder) @@ -4247,6 +4247,9 @@ static void redraw(char *path) else if (cfg.extnorder) sort[0] = 'E'; + if (cmpfn == &xstrverscasecmp) + sort[0] ? (sort[1] = 'V', sort[2] = ' ') : (sort[0] = 'V'); + /* Get the file extension for regular files */ if (S_ISREG(pent->mode)) { i = (int)strlen(pent->name); @@ -4782,7 +4785,8 @@ nochange: case SEL_ASIZE: // fallthrough case SEL_BSIZE: // fallthrough case SEL_EXTN: // fallthrough - case SEL_MTIME: + case SEL_MTIME: // fallthrough + case SEL_VERSION: switch (sel) { case SEL_MFLTR: cfg.filtermode ^= 1; @@ -4844,13 +4848,16 @@ nochange: cfg.apparentsz = 0; cfg.blkorder = 0; break; - default: /* SEL_MTIME */ + case SEL_MTIME: cfg.mtimeorder ^= 1; cfg.sizeorder = 0; cfg.apparentsz = 0; cfg.blkorder = 0; cfg.extnorder = 0; break; + default: /* SEL_VERSION */ + cmpfn = (cmpfn == &xstrverscasecmp) ? &xstricmp : &xstrverscasecmp; + break; } clearfilter(); @@ -5540,8 +5547,8 @@ static void usage(void) " -s name load session by name\n" " -S du mode\n" " -t no dir auto-select\n" - " -v show version\n" - " -V version sort\n" + " -v version sort\n" + " -V show version\n" " -x notis, sel to system clipboard\n" " -h show help\n\n" "v%s\n%s\n", __func__, VERSION, GENERAL_INFO); @@ -5758,11 +5765,11 @@ int main(int argc, char *argv[]) check_key_collision(); return _SUCCESS; case 'v': - fprintf(stdout, "%s\n", VERSION); - return _SUCCESS; - case 'V': cmpfn = &xstrverscasecmp; break; + case 'V': + fprintf(stdout, "%s\n", VERSION); + return _SUCCESS; case 'x': cfg.x11 = 1; break; diff --git a/src/nnn.h b/src/nnn.h index 4db7d95a..c8afb96b 100644 --- a/src/nnn.h +++ b/src/nnn.h @@ -72,6 +72,7 @@ enum action { SEL_BSIZE, /* block size */ SEL_EXTN, /* order by extension */ SEL_MTIME, + SEL_VERSION, SEL_REDRAW, SEL_SEL, SEL_SELMUL, @@ -194,6 +195,8 @@ static struct key bindings[] = { { 'E', SEL_EXTN }, /* Toggle sort by time */ { 't', SEL_MTIME }, + /* Toggle version sort */ + { 'v', SEL_VERSION }, /* Redraw window */ { CONTROL('L'), SEL_REDRAW }, { KEY_F(5), SEL_REDRAW },