Support >/. and </, at bookmark prompt to cycle active contexts

This commit is contained in:
Arun Prakash Jana 2018-11-09 03:11:57 +05:30
parent 30dc2baa3b
commit 70f561dd71
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 17 additions and 5 deletions

View file

@ -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.

20
nnn.c
View file

@ -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;