diff --git a/misc/auto-completion/bash/nnn-completion.bash b/misc/auto-completion/bash/nnn-completion.bash index 22da4af3..86102bd4 100644 --- a/misc/auto-completion/bash/nnn-completion.bash +++ b/misc/auto-completion/bash/nnn-completion.bash @@ -19,7 +19,6 @@ _nnn () -E -g -H - -i -K -n -o @@ -31,6 +30,7 @@ _nnn () -S -t -v + -V -x -h ) diff --git a/misc/auto-completion/fish/nnn.fish b/misc/auto-completion/fish/nnn.fish index c71d33cc..f597886e 100644 --- a/misc/auto-completion/fish/nnn.fish +++ b/misc/auto-completion/fish/nnn.fish @@ -18,9 +18,8 @@ complete -c nnn -s d -d 'start in detail mode' complete -c nnn -s E -d 'use EDITOR for undetached edits' complete -c nnn -s g -d 'regex filters' complete -c nnn -s H -d 'show hidden files' -complete -c nnn -s i -d 'start in navigate-as-you-type mode' complete -c nnn -s K -d 'detect key collision' -complete -c nnn -s n -d 'use version compare to sort files' +complete -c nnn -s n -d 'start in navigate-as-you-type mode' complete -c nnn -s o -d 'open files only on Enter' complete -c nnn -s p -r -d 'copy selection to file' -a '-\tstdout' complete -c nnn -s Q -d 'disable quit confirmation' @@ -30,5 +29,6 @@ complete -c nnn -s s -r -d 'load session by name' -x -a '@\t"last session" (ls $ 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 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 c37012c8..a8b5f238 100644 --- a/misc/auto-completion/zsh/_nnn +++ b/misc/auto-completion/zsh/_nnn @@ -16,9 +16,8 @@ args=( '(-E)-E[use EDITOR for undetached edits]' '(-g)-g[regex filters]' '(-H)-H[show hidden files]' - '(-i)-i[start in navigate-as-you-type mode]' '(-K)-K[detect key collision]' - '(-n)-n[use version compare to sort files]' + '(-n)-n[start in navigate-as-you-type mode]' '(-o)-o[open files only on Enter]' '(-p)-p[copy selection to file]:file name' '(-Q)-Q[disable quit confirmation]' @@ -28,6 +27,7 @@ args=( '(-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]' '(-x)-x[notis, sel to system clipboard]' '(-h)-h[show program help]' '*:filename:_files' diff --git a/nnn.1 b/nnn.1 index 6782c5ea..0a236add 100644 --- a/nnn.1 +++ b/nnn.1 @@ -13,7 +13,6 @@ .Op Ar -E .Op Ar -g .Op Ar -H -.Op Ar -i .Op Ar -K .Op Ar -n .Op Ar -p file @@ -23,6 +22,7 @@ .Op Ar -s name .Op Ar -S .Op Ar -v +.Op Ar -V .Op Ar -x .Op Ar -h .Op Ar PATH @@ -65,14 +65,11 @@ supports the following options: .Fl H show hidden files .Pp -.Fl i - start in navigate-as-you-type mode -.Pp .Fl K test for keybind collision .Pp .Fl n - use case-insensitive version compare to sort files + start in navigate-as-you-type mode .Pp .Fl o open files only on Enter key @@ -101,6 +98,9 @@ supports the following options: .Fl v show version and exit .Pp +.Fl V + use case-insensitive version compare to sort files +.Pp .Fl x show notis on selection cp, mv, rm completion; copy path to system clipboard on select .Pp diff --git a/src/nnn.c b/src/nnn.c index 0c72e8aa..5e19413e 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -3473,14 +3473,13 @@ static void show_help(const char *path) "7Left h Parent%-12c~ ` @ - HOME, /, start, last\n" "9g ^A Top%-11cRet Right l Open\n" "9G ^E End%-21c' First file\n" - "cb Pin CWD%-16c^B Go to pinned dir\n" - "9, ^/ Go to bookmark%-10cd Detail view toggle\n" + "c, Pin CWD%-17c. Toggle hidden\n" + "9b ^B Go to bookmark%-10cd Detail view toggle\n" "6(Sh)Tab Cycle context%-11cN Context N\n" - "c/ Filter%-13cIns ^N Nav-as-you-type toggle\n" + "c/ Filter%-14c^/ ^N Nav-as-you-type toggle\n" "aEsc Exit prompt%-9c^L F5 Redraw/clear prompt\n" - "c. Toggle hidden%-11c? Help, conf\n" + "b^G QuitCD%-18c? Help, conf\n" "9Q ^Q Quit%-20cq Quit context\n" - "b^G QuitCD%-1c\n" "1FILES\n" "b^O Open with...%-12cn Create new/link\n" "cD File details%-8c^R F2 Rename/duplicate\n" @@ -4543,8 +4542,7 @@ nochange: case SEL_CDHOME: // fallthrough case SEL_CDBEGIN: // fallthrough case SEL_CDLAST: // fallthrough - case SEL_CDROOT: // fallthrough - case SEL_VISIT: + case SEL_CDROOT: switch (sel) { case SEL_CDHOME: dir = home; @@ -4555,12 +4553,9 @@ nochange: case SEL_CDLAST: dir = lastdir; break; - case SEL_CDROOT: + default: /* SEL_CDROOT */ dir = "/"; break; - default: /* case SEL_VISIT */ - dir = mark; - break; } if (dir[0] == '\0') { @@ -4639,13 +4634,19 @@ nochange: xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX); printkeys(bookmark, g_buf + strlen(g_buf), BM_MAX); printprompt(g_buf); - fd = get_input(NULL); + r = get_input(NULL); - if (!get_kv_val(bookmark, newpath, fd, BM_MAX, TRUE)) { - printwait(messages[MSG_INVALID_KEY], &presel);; - goto nochange; + if (!get_kv_val(bookmark, newpath, r, BM_MAX, TRUE)) { + if (r == ',' && mark[0]) + xstrlcpy(newpath, mark, PATH_MAX); + else { + printwait(messages[MSG_INVALID_KEY], &presel);; + goto nochange; + } } + + if (!xdiraccess(newpath)) { printwait(messages[MSG_ACCESS], &presel); goto nochange; @@ -5466,9 +5467,8 @@ static void usage(void) " -E use EDITOR for undetached edits\n" " -g regex filters [default: string]\n" " -H show hidden files\n" - " -i nav-as-you-type mode\n" " -K detect key collision\n" - " -n version sort\n" + " -n nav-as-you-type mode\n" " -o open files on Enter\n" " -p file selection file [stdout if '-']\n" " -Q no quit confirmation\n" @@ -5478,6 +5478,7 @@ static void usage(void) " -S du mode\n" " -t no dir auto-select\n" " -v show version\n" + " -V version sort\n" " -x notis, sel to system clipboard\n" " -h show help\n\n" "v%s\n%s\n", __func__, VERSION, GENERAL_INFO); @@ -5621,7 +5622,7 @@ int main(int argc, char *argv[]) bool progress = FALSE; #endif - while ((opt = getopt(argc, argv, "HSKiab:cdEgnop:QrRs:tvxh")) != -1) { + while ((opt = getopt(argc, argv, "HSKab:cdEgnop:QrRs:tvVxh")) != -1) { switch (opt) { case 'S': cfg.blkorder = 1; @@ -5631,9 +5632,6 @@ int main(int argc, char *argv[]) cfg.showdetail = 1; printptr = &printent_long; break; - case 'i': - cfg.filtermode = 1; - break; case 'a': cfg.mtime = 0; break; @@ -5654,7 +5652,7 @@ int main(int argc, char *argv[]) cfg.showhidden = 1; break; case 'n': - cmpfn = &xstrverscasecmp; + cfg.filtermode = 1; break; case 'o': cfg.nonavopen = 1; @@ -5699,6 +5697,9 @@ int main(int argc, char *argv[]) case 'v': fprintf(stdout, "%s\n", VERSION); return _SUCCESS; + case 'V': + cmpfn = &xstrverscasecmp; + break; case 'x': cfg.x11 = 1; break; diff --git a/src/nnn.h b/src/nnn.h index 0a917468..e4e9f4a2 100644 --- a/src/nnn.h +++ b/src/nnn.h @@ -52,7 +52,6 @@ enum action { SEL_CDBEGIN, SEL_CDLAST, SEL_CDROOT, - SEL_VISIT, SEL_CYCLE, SEL_CYCLER, SEL_CTX1, @@ -155,8 +154,6 @@ static struct key bindings[] = { { '-', SEL_CDLAST }, /* Go to / */ { '`', SEL_CDROOT }, - /* Visit marked directory */ - { CONTROL('B'), SEL_VISIT }, /* Cycle contexts in forward direction */ { '\t', SEL_CYCLE }, /* Cycle contexts in reverse direction */ @@ -167,15 +164,15 @@ static struct key bindings[] = { { '3', SEL_CTX3 }, { '4', SEL_CTX4 }, /* Bookmark key */ - { CONTROL('_'), SEL_BOOKMARK }, - { ',', SEL_BOOKMARK }, + { 'b', SEL_BOOKMARK }, + { CONTROL('B'), SEL_BOOKMARK }, /* Mark a path to visit later */ - { 'b', SEL_PIN }, + { ',', SEL_PIN }, /* Filter */ { '/', SEL_FLTR }, /* Toggle filter mode */ { KEY_IC, SEL_MFLTR }, - { CONTROL('N'), SEL_MFLTR }, + { CONTROL('_'), SEL_MFLTR }, /* Toggle hide .dot files */ { '.', SEL_TOGGLEDOT }, /* Detailed listing */