aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-03-21 19:10:01 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-03-21 19:10:01 +0530
commit49e36a4707279af74ad2a171b7fb6423ddee8da5 (patch)
treefc2618b9a0d5d641bea22828a8914ec78bb16c02 /src
parentaab90bf515f30bbd71bf034fb27813b84818c2c6 (diff)
downloadnnn-49e36a4707279af74ad2a171b7fb6423ddee8da5.tar.gz
Reformat bookmark handling
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c50
1 files changed, 29 insertions, 21 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 4bca0e6..987adcc 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4041,6 +4041,33 @@ static void printkeys(kv *kvarr, char *buf, uchar max)
buf[i << 1] = '\0';
}
+static size_t handle_bookmark(const char *mark, char *newpath)
+{
+ int fd;
+ size_t r = xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX);
+
+ if (mark) { /* There is a pinned directory */
+ g_buf[--r] = ' ';
+ g_buf[++r] = ',';
+ g_buf[++r] = '\0';
+ ++r;
+ }
+ printkeys(bookmark, g_buf + r - 1, maxbm);
+ printprompt(g_buf);
+
+ r = FALSE;
+ fd = get_input(NULL);
+ if (fd == ',') /* Visit pinned directory */
+ mark ? xstrlcpy(newpath, mark, PATH_MAX) : (r = MSG_NOT_SET);
+ else if (!get_kv_val(bookmark, newpath, fd, maxbm, TRUE))
+ r = MSG_INVALID_KEY;
+
+ if (!r && !xdiraccess(newpath))
+ r = MSG_ACCESS;
+
+ return r;
+}
+
/*
* The help string tokens (each line) start with a HEX value
* which indicates the number of spaces to print before the
@@ -4077,7 +4104,7 @@ static void show_help(const char *path)
"cz Archive%-17ce Edit in EDITOR\n"
"5Space ^J (Un)select%-11cm ^K Mark range/clear\n"
"9p ^P Copy sel here%-11ca Select all\n"
- "9v ^V Move sel here%-8cw ^W cp/mv sel as\n"
+ "9v ^V Move sel here%-8cw ^W Cp/mv sel as\n"
"9x ^X Delete%-18cE Edit sel\n"
"c* Toggle exe%-14c> Export list\n"
"1MISC\n"
@@ -5466,26 +5493,7 @@ nochange:
setdirwatch();
goto begin;
case SEL_BOOKMARK:
- r = xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX);
- if (mark) { /* There is a pinned directory */
- g_buf[--r] = ' ';
- g_buf[++r] = ',';
- g_buf[++r] = '\0';
- ++r;
- }
- printkeys(bookmark, g_buf + r - 1, maxbm);
- printprompt(g_buf);
- fd = get_input(NULL);
-
- r = FALSE;
- if (fd == ',') /* Visit pinned directory */
- mark ? xstrlcpy(newpath, mark, PATH_MAX) : (r = MSG_NOT_SET);
- else if (!get_kv_val(bookmark, newpath, fd, maxbm, TRUE))
- r = MSG_INVALID_KEY;
-
- if (!r && !xdiraccess(newpath))
- r = MSG_ACCESS;
-
+ r = (int)handle_bookmark(mark, newpath);
if (r) {
printwait(messages[r], &presel);
goto nochange;