@@ -19,6 +19,7 @@ _nnn () | |||
-E | |||
-g | |||
-H | |||
-i | |||
-K | |||
-n | |||
-o | |||
@@ -30,7 +31,6 @@ _nnn () | |||
-S | |||
-t | |||
-v | |||
-V | |||
-x | |||
-h | |||
) | |||
@@ -18,8 +18,9 @@ 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 'start in navigate-as-you-type mode' | |||
complete -c nnn -s n -d 'use version compare to sort files' | |||
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' | |||
@@ -29,6 +30,5 @@ 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' |
@@ -16,8 +16,9 @@ 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[start in navigate-as-you-type mode]' | |||
'(-n)-n[use version compare to sort files]' | |||
'(-o)-o[open files only on Enter]' | |||
'(-p)-p[copy selection to file]:file name' | |||
'(-Q)-Q[disable quit confirmation]' | |||
@@ -27,7 +28,6 @@ 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' | |||
@@ -13,6 +13,7 @@ | |||
.Op Ar -E | |||
.Op Ar -g | |||
.Op Ar -H | |||
.Op Ar -i | |||
.Op Ar -K | |||
.Op Ar -n | |||
.Op Ar -p file | |||
@@ -22,7 +23,6 @@ | |||
.Op Ar -s name | |||
.Op Ar -S | |||
.Op Ar -v | |||
.Op Ar -V | |||
.Op Ar -x | |||
.Op Ar -h | |||
.Op Ar PATH | |||
@@ -65,11 +65,14 @@ 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 | |||
start in navigate-as-you-type mode | |||
use case-insensitive version compare to sort files | |||
.Pp | |||
.Fl o | |||
open files only on Enter key | |||
@@ -98,9 +101,6 @@ 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 | |||
@@ -3473,13 +3473,14 @@ 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" | |||
"c, Pin CWD%-17c. Toggle hidden\n" | |||
"9b ^B Go to bookmark%-10cd Detail view toggle\n" | |||
"cb Pin CWD%-16c^B Go to pinned dir\n" | |||
"9, ^/ Go to bookmark%-10cd Detail view toggle\n" | |||
"6(Sh)Tab Cycle context%-11cN Context N\n" | |||
"c/ Filter%-14c^/ ^N Nav-as-you-type toggle\n" | |||
"c/ Filter%-13cIns ^N Nav-as-you-type toggle\n" | |||
"aEsc Exit prompt%-9c^L F5 Redraw/clear prompt\n" | |||
"b^G QuitCD%-18c? Help, conf\n" | |||
"c. Toggle hidden%-11c? 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" | |||
@@ -4542,7 +4543,8 @@ nochange: | |||
case SEL_CDHOME: // fallthrough | |||
case SEL_CDBEGIN: // fallthrough | |||
case SEL_CDLAST: // fallthrough | |||
case SEL_CDROOT: | |||
case SEL_CDROOT: // fallthrough | |||
case SEL_VISIT: | |||
switch (sel) { | |||
case SEL_CDHOME: | |||
dir = home; | |||
@@ -4553,9 +4555,12 @@ nochange: | |||
case SEL_CDLAST: | |||
dir = lastdir; | |||
break; | |||
default: /* SEL_CDROOT */ | |||
case SEL_CDROOT: | |||
dir = "/"; | |||
break; | |||
default: /* case SEL_VISIT */ | |||
dir = mark; | |||
break; | |||
} | |||
if (dir[0] == '\0') { | |||
@@ -4634,19 +4639,13 @@ nochange: | |||
xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX); | |||
printkeys(bookmark, g_buf + strlen(g_buf), BM_MAX); | |||
printprompt(g_buf); | |||
r = get_input(NULL); | |||
fd = get_input(NULL); | |||
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 (!get_kv_val(bookmark, newpath, fd, BM_MAX, TRUE)) { | |||
printwait(messages[MSG_INVALID_KEY], &presel);; | |||
goto nochange; | |||
} | |||
if (!xdiraccess(newpath)) { | |||
printwait(messages[MSG_ACCESS], &presel); | |||
goto nochange; | |||
@@ -5467,8 +5466,9 @@ 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 nav-as-you-type mode\n" | |||
" -n version sort\n" | |||
" -o open files on Enter\n" | |||
" -p file selection file [stdout if '-']\n" | |||
" -Q no quit confirmation\n" | |||
@@ -5478,7 +5478,6 @@ 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); | |||
@@ -5622,7 +5621,7 @@ int main(int argc, char *argv[]) | |||
bool progress = FALSE; | |||
#endif | |||
while ((opt = getopt(argc, argv, "HSKab:cdEgnop:QrRs:tvVxh")) != -1) { | |||
while ((opt = getopt(argc, argv, "HSKiab:cdEgnop:QrRs:tvxh")) != -1) { | |||
switch (opt) { | |||
case 'S': | |||
cfg.blkorder = 1; | |||
@@ -5632,6 +5631,9 @@ 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; | |||
@@ -5652,7 +5654,7 @@ int main(int argc, char *argv[]) | |||
cfg.showhidden = 1; | |||
break; | |||
case 'n': | |||
cfg.filtermode = 1; | |||
cmpfn = &xstrverscasecmp; | |||
break; | |||
case 'o': | |||
cfg.nonavopen = 1; | |||
@@ -5697,9 +5699,6 @@ 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; | |||
@@ -52,6 +52,7 @@ enum action { | |||
SEL_CDBEGIN, | |||
SEL_CDLAST, | |||
SEL_CDROOT, | |||
SEL_VISIT, | |||
SEL_CYCLE, | |||
SEL_CYCLER, | |||
SEL_CTX1, | |||
@@ -154,6 +155,8 @@ 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 */ | |||
@@ -164,15 +167,15 @@ static struct key bindings[] = { | |||
{ '3', SEL_CTX3 }, | |||
{ '4', SEL_CTX4 }, | |||
/* Bookmark key */ | |||
{ 'b', SEL_BOOKMARK }, | |||
{ CONTROL('B'), SEL_BOOKMARK }, | |||
{ CONTROL('_'), SEL_BOOKMARK }, | |||
{ ',', SEL_BOOKMARK }, | |||
/* Mark a path to visit later */ | |||
{ ',', SEL_PIN }, | |||
{ 'b', SEL_PIN }, | |||
/* Filter */ | |||
{ '/', SEL_FLTR }, | |||
/* Toggle filter mode */ | |||
{ KEY_IC, SEL_MFLTR }, | |||
{ CONTROL('_'), SEL_MFLTR }, | |||
{ CONTROL('N'), SEL_MFLTR }, | |||
/* Toggle hide .dot files */ | |||
{ '.', SEL_TOGGLEDOT }, | |||
/* Detailed listing */ | |||