diff --git a/misc/auto-completion/bash/nnn-completion.bash b/misc/auto-completion/bash/nnn-completion.bash index e9061c7b..11b8ef26 100644 --- a/misc/auto-completion/bash/nnn-completion.bash +++ b/misc/auto-completion/bash/nnn-completion.bash @@ -25,6 +25,7 @@ _nnn () -n -o -p + -Q -r -R -S diff --git a/misc/auto-completion/fish/nnn.fish b/misc/auto-completion/fish/nnn.fish index e459aa3d..0c10f93c 100644 --- a/misc/auto-completion/fish/nnn.fish +++ b/misc/auto-completion/fish/nnn.fish @@ -24,6 +24,7 @@ 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 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' complete -c nnn -s r -d 'show cp, mv progress (Linux-only)' complete -c nnn -s R -d 'disable rollover at edges' complete -c nnn -s S -d 'start in disk usage analyzer mode' diff --git a/misc/auto-completion/zsh/_nnn b/misc/auto-completion/zsh/_nnn index 777894f5..6e94a0ee 100644 --- a/misc/auto-completion/zsh/_nnn +++ b/misc/auto-completion/zsh/_nnn @@ -22,6 +22,7 @@ args=( '(-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]' '(-r)-r[show cp, mv progress (Linux-only)]' '(-R)-R[disable rollover at edges]' '(-S)-S[start in disk usage analyzer mode]' diff --git a/nnn.1 b/nnn.1 index fcb8f2d8..89daf5d3 100644 --- a/nnn.1 +++ b/nnn.1 @@ -18,6 +18,7 @@ .Op Ar -K .Op Ar -n .Op Ar -p file +.Op Ar -Q .Op Ar -r .Op Ar -R .Op Ar -S @@ -82,6 +83,9 @@ supports the following options: .Fl "p file" copy (or \fIpick\fR) selection to file, or stdout if file='-' .Pp +.Fl Q + disable confirmation when quitting program with multiple active contexts +.Pp .Fl r show cp, mv progress (Linux-only, needs advcpmv; '^T' shows the progress on BSD/macOS) .Pp diff --git a/src/nnn.c b/src/nnn.c index 883ee9d8..a9fb120e 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -227,8 +227,9 @@ typedef struct { uint selmode : 1; /* Set when selecting files */ uint showdetail : 1; /* Clear to show fewer file info */ uint ctxactive : 1; /* Context active or not */ - uint reserved : 3; + uint reserved : 2; /* The following settings are global */ + uint forcequit : 1; /* Do not confirm when quitting program */ uint curctx : 2; /* Current context number */ uint dircolor : 1; /* Current status of dir color */ uint picker : 1; /* Write selection to user-specified file */ @@ -281,6 +282,7 @@ static settings cfg = { 0, /* showdetail */ 1, /* ctxactive */ 0, /* reserved */ + 0, /* forcequit */ 0, /* curctx */ 0, /* dircolor */ 0, /* picker */ @@ -5348,7 +5350,7 @@ nochange: setdirwatch(); goto begin; } - } else { + } else if (!cfg.forcequit) { for (r = 0; r < CTX_MAX; ++r) if (r != cfg.curctx && g_ctx[r].c_cfg.ctxactive) { r = get_input(messages[MSG_QUIT_ALL]); @@ -5430,10 +5432,11 @@ static void usage(void) " -n version sort\n" " -o open files on Enter\n" " -p file selection file [stdout if '-']\n" + " -Q no quit confirmation\n" " -r use advcpmv patched cp, mv\n" - " -R disable rollover at edges\n" + " -R no rollover at edges\n" " -S du mode\n" - " -t disable dir auto-select\n" + " -t no dir auto-select\n" " -v show version\n" " -x notis, sel to system clipboard\n" " -h show help\n\n" @@ -5578,7 +5581,7 @@ int main(int argc, char *argv[]) bool progress = FALSE; #endif - while ((opt = getopt(argc, argv, "HSKiab:cde:Egnop:rRtvxh")) != -1) { + while ((opt = getopt(argc, argv, "HSKiab:cde:Egnop:QrRtvxh")) != -1) { switch (opt) { case 'S': cfg.blkorder = 1; @@ -5636,6 +5639,9 @@ int main(int argc, char *argv[]) unlink(g_selpath); } break; + case 'Q': + cfg.forcequit = 1; + break; case 'r': #ifdef __linux__ progress = TRUE;