]> Sergey Matveev's repositories - nnn.git/commitdiff
Auto-proceed on open (key + to toggle)
authorArun Prakash Jana <engineerarun@gmail.com>
Thu, 30 Jan 2020 20:15:06 +0000 (01:45 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Thu, 30 Jan 2020 20:15:06 +0000 (01:45 +0530)
src/nnn.c
src/nnn.h

index 53fad5c93f09c3e20e882cf3277f79e716057b6a..1a07dce21d5984f5a36e3c32b1748da90cfa8758 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -385,6 +385,7 @@ static char g_pipepath[TMP_LEN_MAX] __attribute__ ((aligned));
 #define STATE_INTERRUPTED 0x2
 #define STATE_RANGESEL 0x4
 #define STATE_MOVE_OP 0x8
+#define STATE_AUTONEXT 0x10
 
 static uchar g_states;
 
@@ -3759,9 +3760,9 @@ static void show_help(const char *path)
                "a1-4  Context 1-4%-8c(B)Tab  Cycle context\n"
                  "c/  Filter%-17c^N  Nav-as-you-type toggle\n"
                "aEsc  Exit prompt%-12c^L  Redraw/clear prompt\n"
-                 "c?  Help, conf%-13c^G  QuitCD\n"
-                 "cq  Quit context%-12cQ  Quit with err\n"
-                "b^Q  Quit\n"
+                 "c?  Help, conf%-14c+  Toggle proceed on open\n"
+                 "cq  Quit context%-11c^G  QuitCD\n"
+                "b^Q  Quit%-20cQ  Quit with err\n"
                "1FILES\n"
               "9o ^O  Open with...%-12cn  Create new/link\n"
               "9f ^F  File details%-12cd  Detail view toggle\n"
@@ -5017,6 +5018,11 @@ nochange:
 
                                /* Invoke desktop opener as last resort */
                                spawn(opener, newpath, NULL, NULL, opener_flags);
+
+                               /* Move cursor to the next entry if not the last entry */
+                               if ((g_states & STATE_AUTONEXT) && cur != ndents - 1)
+                                       move_cursor((cur + 1) % ndents, 0);
+
                                continue;
                        }
                        default:
@@ -5770,6 +5776,9 @@ nochange:
 
                        statusbar(path);
                        goto nochange;
+               case SEL_AUTONEXT:
+                       g_states ^= STATE_AUTONEXT;
+                       goto nochange;
                case SEL_QUITCTX: // fallthrough
                case SEL_QUITCD: // fallthrough
                case SEL_QUIT:
index 665c5283aadce5d79aff2f29180b3e2644505669..efa6ae686d0d4c864557919ade25b307c269b9c0 100644 (file)
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -90,6 +90,7 @@ enum action {
        SEL_RUNCMD,
        SEL_LOCK,
        SEL_SESSIONS,
+       SEL_AUTONEXT,
        SEL_QUITCTX,
        SEL_QUITCD,
        SEL_QUIT,
@@ -229,6 +230,10 @@ static struct key bindings[] = {
        { ']',            SEL_RUNCMD },
        /* Lock screen */
        { '0',            SEL_LOCK },
+       /* Manage sessions */
+       { 's',            SEL_SESSIONS },
+       /* Quit a context */
+       { '+',            SEL_AUTONEXT },
        /* Quit a context */
        { 'q',            SEL_QUITCTX },
        /* Change dir on quit */
@@ -238,5 +243,4 @@ static struct key bindings[] = {
        /* Quit with an error code */
        { 'Q',            SEL_QUITFAIL },
        { KEY_MOUSE,      SEL_CLICK },
-       { 's',            SEL_SESSIONS },
 };