]> Sergey Matveev's repositories - nnn.git/commitdiff
Option -T to change default sort order
authorArun Prakash Jana <engineerarun@gmail.com>
Tue, 17 Mar 2020 21:05:05 +0000 (02:35 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Tue, 17 Mar 2020 21:05:05 +0000 (02:35 +0530)
misc/auto-completion/bash/nnn-completion.bash
misc/auto-completion/fish/nnn.fish
misc/auto-completion/zsh/_nnn
nnn.1
src/nnn.c

index b6e370da932cb5c23f8a83ffb5c40763a635d3de..64dff7a640aee73c930f9ddcbba796ed2d1320cf 100644 (file)
@@ -31,6 +31,7 @@ _nnn ()
         -s
         -S
         -t
+        -T
         -v
         -V
         -x
@@ -46,6 +47,9 @@ _nnn ()
         COMPREPLY=( $(cd "$sessions_dir" && compgen -f -d -- "$cur") )
     elif [[ $prev == -t ]]; then
         return 1
+    elif [[ $prev == -T ]]; then
+        local keys=$(echo "a d e r s t v" | awk -v RS=' ' '{print $0}')
+        COMPREPLY=( $(compgen -W "$keys" -- "$cur") )
     elif [[ $cur == -* ]]; then
         COMPREPLY=( $(compgen -W "${opts[*]}" -- "$cur") )
     else
index 99c857aa22a911e7bf56de85b73c12c338ec1dda..6bc3e0e0e1c02ffea5f13a86451c02324ce41e73 100644 (file)
@@ -30,6 +30,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 -r -d 'timeout in seconds to lock'
+complete -c nnn -s T -r -d 'a d e r s t v'
 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'
index bd6e926ec370db482f085dd5104a6f4728a3cd49..f355263bd58885d692f7c389f37157ad3eeaa995 100644 (file)
@@ -28,6 +28,7 @@ args=(
     '(-s)-s[load session]:session name'
     '(-S)-S[start in disk usage analyzer mode]'
     '(-t)-t[timeout to lock]:seconds'
+    '(-T)-T[a d e r s t v]:key'
     '(-v)-v[use version compare to sort files]'
     '(-V)-V[show program version and exit]'
     '(-x)-x[notis, sel to system clipboard]'
diff --git a/nnn.1 b/nnn.1
index 307a508aa9c4a92cf5e73cf1b2b875b17825c8b6..0b5310abb91ba69cda4923a94cc01debfe0d6ae2 100644 (file)
--- a/nnn.1
+++ b/nnn.1
@@ -24,6 +24,7 @@
 .Op Ar -s name
 .Op Ar -S
 .Op Ar -t secs
+.Op Ar -T key
 .Op Ar -v
 .Op Ar -V
 .Op Ar -x
@@ -110,6 +111,10 @@ supports the following options:
 .Fl "t secs"
         idle timeout in seconds to lock terminal
 .Pp
+.Fl "T key"
+        sort order
+        keys: 'a'u / 'd'u / 'e'xtension / 'r'everse / 's'ize / 't'ime / 'v'ersion
+.Pp
 .Fl v
         use case-insensitive version compare to sort files
 .Pp
index da9ddddf53675a6dc0786d83ff5b06e73b7da1b3..6e2113e4e70ab9ec312f3db515dad37a248be649 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4664,10 +4664,8 @@ static int handle_context_switch(enum action sel, char *newpath)
        return r;
 }
 
-static bool set_sort_flags(void)
+static bool set_sort_flags(int r)
 {
-       int r = get_input(messages[MSG_ORDER]);
-
        switch (r) {
        case 'a': /* Apparent du */
                cfg.apparentsz ^= 1;
@@ -5559,7 +5557,7 @@ nochange:
                                cfg.blkorder = 0;
                                continue;
                        default: /* SEL_SORT */
-                               if (!set_sort_flags()) {
+                               if (!set_sort_flags(get_input(messages[MSG_ORDER]))) {
                                        if (cfg.filtermode)
                                                presel = FILTER;
                                        printwait(messages[MSG_INVALID_KEY], &presel);
@@ -6491,6 +6489,7 @@ static void usage(void)
                " -s name load session by name\n"
                " -S      du mode\n"
                " -t secs timeout to lock\n"
+               " -T key  sort order [a/d/e/r/s/t/v]\n"
                " -v      version sort\n"
                " -V      show version\n"
                " -x      notis, sel to system clipboard\n"
@@ -6626,7 +6625,7 @@ int main(int argc, char *argv[])
 {
        char *arg = NULL;
        char *session = NULL;
-       int opt;
+       int opt, sort = 0;
 #ifndef NOMOUSE
        mmask_t mask;
        char *middle_click_env = xgetenv(env_cfg[NNN_MCLICK], "\0");
@@ -6640,7 +6639,7 @@ int main(int argc, char *argv[])
 
        while ((opt = (env_opts_id > 0
                       ? env_opts[--env_opts_id]
-                      : getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:vVxh"))) != -1) {
+                      : getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:T:vVxh"))) != -1) {
                switch (opt) {
                case 'a':
                        cfg.mtime = 0;
@@ -6724,6 +6723,10 @@ int main(int argc, char *argv[])
                        if (env_opts_id < 0)
                                idletimeout = atoi(optarg);
                        break;
+               case 'T':
+                       if (env_opts_id < 0)
+                               sort = optarg[0];
+                       break;
                case 'v':
                        namecmpfn = &xstrverscasecmp;
                        break;
@@ -6938,6 +6941,9 @@ int main(int argc, char *argv[])
 #endif
                return _FAILURE;
 
+       if (sort)
+               set_sort_flags(sort);
+
        opt = browse(initpath, session);
 
 #ifndef NOMOUSE