From 06ff738b4c569819fb40ea41df7b0e9c5853fa4b Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Tue, 27 Nov 2018 03:19:37 +0530 Subject: [PATCH] Use ^B to go to next context --- README.md | 1 + nnn.1 | 2 ++ src/nnn.c | 14 ++++++++++---- src/nnn.h | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bd5a0790..c4142ca0 100644 --- a/README.md +++ b/README.md @@ -222,6 +222,7 @@ Press ? in `nnn` to see the list anytime. →, ↵, l, ^M Open file/enter dir . Toggle show hidden / Filter Ins, ^I Toggle nav-as-you-type b Pin current dir ^W Go to pinned dir + ^B Next active context `, ^/ Leader key LeaderN Switch to context N Esc Exit prompt ^L Redraw, clear prompt ^G Quit and cd q Quit context diff --git a/nnn.1 b/nnn.1 index 736e1f41..91fc2b99 100644 --- a/nnn.1 +++ b/nnn.1 @@ -64,6 +64,8 @@ Toggle navigate-as-you-type mode Pin current directory .It Ic ^W Visit pinned directory +.It Ic ^B +Next active context .It Ic `, ^/ Leader key .It Ic LeaderN diff --git a/src/nnn.c b/src/nnn.c index 522ba64c..f7cdbf04 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -1015,9 +1015,10 @@ static int nextsel(char **run, char **env, int *presel) c = *presel; - if (c == 0) + if (c == 0) { c = getch(); - else { + DPRINTF_D(c); + } else { /* Unwatch dir if we are still in a filtered view */ #ifdef LINUX_INOTIFY if (*presel == FILTER && inotify_wd >= 0) { @@ -1978,7 +1979,8 @@ static int show_help(char *path) "4→, ↵, l, ^M Open file/enter dir . Toggle show hidden\n" "e/ Filter Ins, ^I Toggle nav-as-you-type\n" "eb Pin current dir ^W Go to pinned dir\n" - "a`, ^/ Leader key LeaderN Switch to context N\n" + "d^B Next active context\n" + "a`, ^/ Leader key LeaderN Go to context N\n" "cEsc Exit prompt ^L Redraw, clear prompt\n" "d^G Quit and cd q Quit context\n" "aQ, ^Q Quit ? Help, config\n" @@ -2729,7 +2731,11 @@ nochange: setdirwatch(); goto begin; case SEL_LEADER: - fd = get_input(NULL); + fd = get_input(NULL); // fallthrough + case SEL_CYCLE: + if (sel == SEL_CYCLE) + fd = '>'; + switch (fd) { case 'q': // fallthrough case '~': // fallthrough diff --git a/src/nnn.h b/src/nnn.h index 4b13d918..0f82937d 100644 --- a/src/nnn.h +++ b/src/nnn.h @@ -49,6 +49,7 @@ enum action { SEL_CDBEGIN, SEL_CDLAST, SEL_LEADER, + SEL_CYCLE, SEL_PIN, SEL_VISIT, SEL_FLTR, @@ -153,6 +154,8 @@ static struct key bindings[] = { /* Leader key */ { CONTROL('_'), SEL_LEADER, "", "" }, { '`', SEL_LEADER, "", "" }, + /* Cycle contexts in forward direction */ + { CONTROL('B'), SEL_CYCLE, "", "" }, /* Mark a path to visit later */ { 'b', SEL_PIN, "", "" }, /* Visit marked directory */