mirror of
https://github.com/jarun/nnn.git
synced 2024-12-01 02:49:44 +00:00
Fix #420: reduce Lead key to bookmark key
This commit is contained in:
parent
d9da85a365
commit
1ed5febe0c
2
nnn.1
2
nnn.1
|
@ -179,7 +179,7 @@ when dealing with the !, e and p commands respectively. A single combination to
|
||||||
.Bd -literal
|
.Bd -literal
|
||||||
export NNN_BMS='d:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
|
export NNN_BMS='d:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
|
||||||
|
|
||||||
NOTE: To go to a bookmark, press the Lead key followed by the bookmark key.
|
NOTE: To go to a bookmark, press the Go to bookmark shortcut followed by the key.
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
\fBNNN_PLUG:\fR directly executable plugins as \fIkey_char:location\fR pairs (max 10) separated by
|
\fBNNN_PLUG:\fR directly executable plugins as \fIkey_char:location\fR pairs (max 10) separated by
|
||||||
|
|
61
src/nnn.c
61
src/nnn.c
|
@ -2127,7 +2127,7 @@ static int filterentries(char *path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
if (*ch != '\t' && *ch != CONTROL('_'))
|
if (*ch != '\t' && *ch != 27)
|
||||||
g_ctx[cfg.curctx].c_fltr[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
|
g_ctx[cfg.curctx].c_fltr[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
|
||||||
|
|
||||||
move_cursor(cur, 0);
|
move_cursor(cur, 0);
|
||||||
|
@ -3474,8 +3474,8 @@ static void show_help(const char *path)
|
||||||
"9g ^A Top%-11cRet Right l Open\n"
|
"9g ^A Top%-11cRet Right l Open\n"
|
||||||
"9G ^E Bottom%-18c' First file\n"
|
"9G ^E Bottom%-18c' First file\n"
|
||||||
"cb Pin CWD%-16c^B Go to pinned dir\n"
|
"cb Pin CWD%-16c^B Go to pinned dir\n"
|
||||||
"9, ^/ Lead key%-10cN LeadN Context N\n"
|
"9, ^/ Go to bookmark%-10cd Detail view toggle\n"
|
||||||
"6(Sh)Tab Cycle context%-11cd Detail view toggle\n"
|
"6(Sh)Tab Cycle context%-11cN Context N\n"
|
||||||
"c/ Filter%-13cIns ^N Nav-as-you-type toggle\n"
|
"c/ Filter%-13cIns ^N Nav-as-you-type toggle\n"
|
||||||
"aEsc Exit prompt%-9c^L F5 Redraw/clear prompt\n"
|
"aEsc Exit prompt%-9c^L F5 Redraw/clear prompt\n"
|
||||||
"c. Toggle hidden%-11c? Help, conf\n"
|
"c. Toggle hidden%-11c? Help, conf\n"
|
||||||
|
@ -3496,7 +3496,7 @@ static void show_help(const char *path)
|
||||||
"cz Size%-20ct Time\n"
|
"cz Size%-20ct Time\n"
|
||||||
"cE Extension%-1c\n"
|
"cE Extension%-1c\n"
|
||||||
"1MISC\n"
|
"1MISC\n"
|
||||||
"9! ^] Shell%-17c; x Plugin key\n"
|
"9! ^] Shell%-17c; x Run plugin\n"
|
||||||
"cC Execute file%-9ci ^V Pick plugin\n"
|
"cC Execute file%-9ci ^V Pick plugin\n"
|
||||||
"cs Manage session%-10c= Launch app\n"
|
"cs Manage session%-10c= Launch app\n"
|
||||||
"cc Connect remote%-10cu Unmount\n"
|
"cc Connect remote%-10cu Unmount\n"
|
||||||
|
@ -4587,7 +4587,6 @@ nochange:
|
||||||
DPRINTF_S(path);
|
DPRINTF_S(path);
|
||||||
setdirwatch();
|
setdirwatch();
|
||||||
goto begin;
|
goto begin;
|
||||||
case SEL_LEADER: // fallthrough
|
|
||||||
case SEL_CYCLE: // fallthrough
|
case SEL_CYCLE: // fallthrough
|
||||||
case SEL_CYCLER: // fallthrough
|
case SEL_CYCLER: // fallthrough
|
||||||
case SEL_CTX1: // fallthrough
|
case SEL_CTX1: // fallthrough
|
||||||
|
@ -4595,43 +4594,11 @@ nochange:
|
||||||
case SEL_CTX3: // fallthrough
|
case SEL_CTX3: // fallthrough
|
||||||
case SEL_CTX4:
|
case SEL_CTX4:
|
||||||
switch (sel) {
|
switch (sel) {
|
||||||
case SEL_CYCLE:
|
case SEL_CYCLE: // fallthrough
|
||||||
fd = '\t';
|
|
||||||
break;
|
|
||||||
case SEL_CYCLER:
|
case SEL_CYCLER:
|
||||||
fd = KEY_BTAB;
|
|
||||||
break;
|
|
||||||
case SEL_CTX1: // fallthrough
|
|
||||||
case SEL_CTX2: // fallthrough
|
|
||||||
case SEL_CTX3: // fallthrough
|
|
||||||
case SEL_CTX4:
|
|
||||||
fd = sel - SEL_CTX1 + '1';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX);
|
|
||||||
printkeys(bookmark, g_buf + strlen(g_buf), BM_MAX);
|
|
||||||
printprompt(g_buf);
|
|
||||||
fd = get_input(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (fd) {
|
|
||||||
case '~': // fallthrough
|
|
||||||
case '`': // fallthrough
|
|
||||||
case '-': // fallthrough
|
|
||||||
case '@':
|
|
||||||
presel = fd;
|
|
||||||
goto nochange;
|
|
||||||
case '.':
|
|
||||||
cfg.showhidden ^= 1;
|
|
||||||
setdirwatch();
|
|
||||||
if (ndents)
|
|
||||||
copycurname();
|
|
||||||
goto begin;
|
|
||||||
case '\t': // fallthrough
|
|
||||||
case KEY_BTAB:
|
|
||||||
/* visit next and previous contexts */
|
/* visit next and previous contexts */
|
||||||
r = cfg.curctx;
|
r = cfg.curctx;
|
||||||
if (fd == '\t')
|
if (sel == SEL_CYCLE)
|
||||||
do
|
do
|
||||||
r = (r + 1) & ~CTX_MAX;
|
r = (r + 1) & ~CTX_MAX;
|
||||||
while (!g_ctx[r].c_cfg.ctxactive);
|
while (!g_ctx[r].c_cfg.ctxactive);
|
||||||
|
@ -4639,12 +4606,11 @@ nochange:
|
||||||
do
|
do
|
||||||
r = (r + (CTX_MAX - 1)) & (CTX_MAX - 1);
|
r = (r + (CTX_MAX - 1)) & (CTX_MAX - 1);
|
||||||
while (!g_ctx[r].c_cfg.ctxactive);
|
while (!g_ctx[r].c_cfg.ctxactive);
|
||||||
fd = '1' + r; // fallthrough
|
// fallthrough
|
||||||
case '1': // fallthrough
|
default: /* SEL_CTXN */
|
||||||
case '2': // fallthrough
|
if (sel >= SEL_CTX1) /* CYCLE keys are lesser in value */
|
||||||
case '3': // fallthrough
|
r = sel - SEL_CTX1; /* Save the next context id */
|
||||||
case '4':
|
|
||||||
r = fd - '1'; /* Save the next context id */
|
|
||||||
if (cfg.curctx == r) {
|
if (cfg.curctx == r) {
|
||||||
if (sel != SEL_CYCLE)
|
if (sel != SEL_CYCLE)
|
||||||
continue;
|
continue;
|
||||||
|
@ -4669,6 +4635,11 @@ nochange:
|
||||||
setdirwatch();
|
setdirwatch();
|
||||||
goto begin;
|
goto begin;
|
||||||
}
|
}
|
||||||
|
case SEL_BOOKMARK:
|
||||||
|
xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX);
|
||||||
|
printkeys(bookmark, g_buf + strlen(g_buf), BM_MAX);
|
||||||
|
printprompt(g_buf);
|
||||||
|
fd = get_input(NULL);
|
||||||
|
|
||||||
if (!get_kv_val(bookmark, newpath, fd, BM_MAX, TRUE)) {
|
if (!get_kv_val(bookmark, newpath, fd, BM_MAX, TRUE)) {
|
||||||
printwait(messages[MSG_INVALID_KEY], &presel);;
|
printwait(messages[MSG_INVALID_KEY], &presel);;
|
||||||
|
|
|
@ -53,13 +53,13 @@ enum action {
|
||||||
SEL_CDLAST,
|
SEL_CDLAST,
|
||||||
SEL_CDROOT,
|
SEL_CDROOT,
|
||||||
SEL_VISIT,
|
SEL_VISIT,
|
||||||
SEL_LEADER,
|
|
||||||
SEL_CYCLE,
|
SEL_CYCLE,
|
||||||
SEL_CYCLER,
|
SEL_CYCLER,
|
||||||
SEL_CTX1,
|
SEL_CTX1,
|
||||||
SEL_CTX2,
|
SEL_CTX2,
|
||||||
SEL_CTX3,
|
SEL_CTX3,
|
||||||
SEL_CTX4,
|
SEL_CTX4,
|
||||||
|
SEL_BOOKMARK,
|
||||||
SEL_PIN,
|
SEL_PIN,
|
||||||
SEL_FLTR,
|
SEL_FLTR,
|
||||||
SEL_MFLTR,
|
SEL_MFLTR,
|
||||||
|
@ -157,9 +157,6 @@ static struct key bindings[] = {
|
||||||
{ '`', SEL_CDROOT },
|
{ '`', SEL_CDROOT },
|
||||||
/* Visit marked directory */
|
/* Visit marked directory */
|
||||||
{ CONTROL('B'), SEL_VISIT },
|
{ CONTROL('B'), SEL_VISIT },
|
||||||
/* Leader key */
|
|
||||||
{ CONTROL('_'), SEL_LEADER },
|
|
||||||
{ ',', SEL_LEADER },
|
|
||||||
/* Cycle contexts in forward direction */
|
/* Cycle contexts in forward direction */
|
||||||
{ '\t', SEL_CYCLE },
|
{ '\t', SEL_CYCLE },
|
||||||
/* Cycle contexts in reverse direction */
|
/* Cycle contexts in reverse direction */
|
||||||
|
@ -169,6 +166,9 @@ static struct key bindings[] = {
|
||||||
{ '2', SEL_CTX2 },
|
{ '2', SEL_CTX2 },
|
||||||
{ '3', SEL_CTX3 },
|
{ '3', SEL_CTX3 },
|
||||||
{ '4', SEL_CTX4 },
|
{ '4', SEL_CTX4 },
|
||||||
|
/* Bookmark key */
|
||||||
|
{ CONTROL('_'), SEL_BOOKMARK },
|
||||||
|
{ ',', SEL_BOOKMARK },
|
||||||
/* Mark a path to visit later */
|
/* Mark a path to visit later */
|
||||||
{ 'b', SEL_PIN },
|
{ 'b', SEL_PIN },
|
||||||
/* Filter */
|
/* Filter */
|
||||||
|
|
Loading…
Reference in a new issue