From 6f48a711d408f4fdc4e3474afb23f351b6fc8f1c Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 31 Jan 2020 01:45:06 +0530 Subject: [PATCH] Auto-proceed on open (key + to toggle) --- src/nnn.c | 15 ++++++++++++--- src/nnn.h | 6 +++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 53fad5c9..1a07dce2 100644 --- 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: diff --git a/src/nnn.h b/src/nnn.h index 665c5283..efa6ae68 100644 --- 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 }, };