diff options
| author | 2018-11-09 03:11:57 +0530 | |
|---|---|---|
| committer | 2018-11-09 03:11:57 +0530 | |
| commit | 70f561dd7184443981006528ea7a8d33600d6f5c (patch) | |
| tree | 3860c91ba427d0226e1343c8dce6ecb0d718868f | |
| parent | 30dc2baa3b978e179eb46f1add4ab69da3edd3cb (diff) | |
| download | nnn-70f561dd7184443981006528ea7a8d33600d6f5c.tar.gz | |
Support >/. and </, at bookmark prompt to cycle active contexts
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | nnn.c | 20 |
2 files changed, 17 insertions, 5 deletions
@@ -267,7 +267,7 @@ Contexts (aka _tabs_ aka _workspaces_) serve the purpose of exploring multiple d - other used contexts are underlined - rest are unused -The bookmark prompt understands contexts. To switch contexts press <kbd>^B</kbd> and enter the context number (1-4). +The bookmark prompt understands contexts. To switch contexts press <kbd>^B</kbd> and enter the context number (1-4). <kbd>>/.</kbd> and <kbd></.</kbd> at the bookmark prompt cycles between active contexts. The first time a context is entered, it copies the state of the last visited context. Each context remembers its start directory and last visited directory. @@ -2485,6 +2485,7 @@ static void browse(char *ipath, char *ifilter) /* setup first context */ xstrlcpy(g_ctx[0].c_init, ipath, PATH_MAX); + g_ctx[0].c_cfg = cfg; xstrlcpy(path, ipath, PATH_MAX); copyfilter(); @@ -2751,6 +2752,20 @@ nochange: case '&': presel = tmp[0]; goto begin; + case '>': + case '.': + case '<': + case ',': + r = cfg.curctx; + if (tmp[0] == '>' || tmp[0] == '.') + do + (r == MAX_CTX - 1) ? (r = 0) : ++r; + while (!g_ctx[r].c_cfg.ctxactive); + else + do + (r == 0) ? (r = MAX_CTX - 1) : --r; + while (!g_ctx[r].c_cfg.ctxactive); //fallthrough + tmp[0] = '1' + r; //fallthrough case '1': //fallthrough case '2': //fallthrough case '3': //fallthrough @@ -3298,10 +3313,7 @@ nochange: uint iter = 1; r = cfg.curctx; while (iter < MAX_CTX) { - ++r; - r %= MAX_CTX; - DPRINTF_D(r); - DPRINTF_U(g_ctx[r].c_cfg.ctxactive); + (r == MAX_CTX - 1) ? (r = 0) : ++r; if (g_ctx[r].c_cfg.ctxactive) { g_ctx[cfg.curctx].c_cfg.ctxactive = 0; |