Reformat bookmark handling

This commit is contained in:
Arun Prakash Jana 2020-03-21 19:10:01 +05:30
parent aab90bf515
commit 49e36a4707
No known key found for this signature in database
GPG Key ID: A75979F35C080412
1 changed files with 29 additions and 21 deletions

View File

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