aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nnn.c106
1 files changed, 58 insertions, 48 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 11ace9c..66d7d49 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -422,49 +422,48 @@ static char * const utils[] = {
/* Common strings */
#define MSG_NO_TRAVERSAL 0
#define MSG_INVBM_KEY 1
-#define STR_DATE_ID 2
-#define STR_TMPFILE 3
-#define MSG_0_SELECTED 4
-#define MSG_UTIL_MISSING 5
-#define MSG_FAILED 6
-#define MSG_SSN_NAME 7
-#define MSG_CP_MV_AS 8
-#define MSG_CUR_SEL_OPTS 9
-#define MSG_FORCE_RM 10
-#define MSG_CREATE_CTX 11
-#define MSG_NEW_OPTS 12
-#define MSG_CLI_MODE 13
-#define MSG_OVERWRITE 14
-#define MSG_SSN_OPTS 15
-#define MSG_QUIT_ALL 16
-#define MSG_HOSTNAME 17
-#define MSG_ARCHIVE_NAME 18
-#define MSG_OPEN_WITH 19
-#define MSG_REL_PATH 20
-#define MSG_LINK_SUFFIX 21
-#define MSG_COPY_NAME 22
-#define MSG_CONTINUE 23
-#define MSG_SEL_MISSING 24
-#define MSG_ACCESS 25
-#define MSG_0_CREATED 26
-#define MSG_NOT_REG_FILE 27
-#define MSG_PERM_DENIED 28
-#define MSG_EMPTY_FILE 29
-#define MSG_UNSUPPORTED 30
-#define MSG_NOT_SET 31
-#define MSG_DIR_CHANGED 32
-#define MSG_0_FILES 33
-#define MSG_EXISTS 34
-#define MSG_FEW_COLOUMNS 35
-#define MSG_REMOTE_OPTS 36
-#define MSG_RCLONE_DELAY 37
-#define MSG_APP_NAME 38
-#define MSG_ARCHIVE_OPTS 39
+#define STR_TMPFILE 2
+#define MSG_0_SELECTED 3
+#define MSG_UTIL_MISSING 4
+#define MSG_FAILED 5
+#define MSG_SSN_NAME 6
+#define MSG_CP_MV_AS 7
+#define MSG_CUR_SEL_OPTS 8
+#define MSG_FORCE_RM 9
+#define MSG_CREATE_CTX 10
+#define MSG_NEW_OPTS 11
+#define MSG_CLI_MODE 12
+#define MSG_OVERWRITE 13
+#define MSG_SSN_OPTS 14
+#define MSG_QUIT_ALL 15
+#define MSG_HOSTNAME 16
+#define MSG_ARCHIVE_NAME 17
+#define MSG_OPEN_WITH 18
+#define MSG_REL_PATH 19
+#define MSG_LINK_SUFFIX 20
+#define MSG_COPY_NAME 21
+#define MSG_CONTINUE 22
+#define MSG_SEL_MISSING 23
+#define MSG_ACCESS 24
+#define MSG_0_CREATED 25
+#define MSG_NOT_REG_FILE 26
+#define MSG_PERM_DENIED 27
+#define MSG_EMPTY_FILE 28
+#define MSG_UNSUPPORTED 29
+#define MSG_NOT_SET 30
+#define MSG_DIR_CHANGED 31
+#define MSG_EXISTS 32
+#define MSG_FEW_COLUMNS 33
+#define MSG_REMOTE_OPTS 34
+#define MSG_RCLONE_DELAY 35
+#define MSG_APP_NAME 36
+#define MSG_ARCHIVE_OPTS 37
+#define MSG_PLUGIN_KEYS 38
+#define MSG_BOOKMARK_KEYS 39
static const char * const messages[] = {
"no traversal",
"invalid key",
- "%F %T %z",
"/.nnnXXXXXX",
"0 selected",
"missing util",
@@ -495,13 +494,14 @@ static const char * const messages[] = {
"unsupported file",
"not set",
"dir changed, range sel off",
- "0 files",
"entry exists",
"too few columns!",
"'s'shfs / 'r'clone?",
"may take a while, try refresh",
"app name: ",
"e'x'tract / 'l'ist / 'm'ount?",
+ "plugin keys:",
+ "bookmark keys:",
};
/* Supported configuration environment variables */
@@ -3434,12 +3434,17 @@ static void printkv(kv *kvarr, FILE *fp, uchar max)
fprintf(fp, " %c: %s\n", (char)kvarr[i].key, kvarr[i].val);
}
-static void sprintkv(kv *kvarr, char *buf, uchar max)
+static void sprintkeys(kv *kvarr, char *buf, uchar max)
{
uchar i = 0;
+ uchar j = 0;
- for (; i < max && kvarr[i].key; ++i)
- buf += snprintf(buf, CMD_LEN_MAX, " %c=%s", (char)kvarr[i].key, kvarr[i].val);
+ for (; i < max && kvarr[i].key; ++i, j+=2) {
+ buf[j] = ' ';
+ buf[j+1] = kvarr[i].key;
+ }
+
+ buf[j] = '\0';
}
/*
@@ -4034,7 +4039,7 @@ static void redraw(char *path)
/* Fail redraw if < than 10 columns, context info prints 10 chars */
if (ncols < MIN_DISPLAY_COLS) {
- printmsg(messages[MSG_FEW_COLOUMNS]);
+ printmsg(messages[MSG_FEW_COLUMNS]);
return;
}
@@ -4568,6 +4573,9 @@ nochange:
fd = sel - SEL_CTX1 + '1';
break;
default:
+ xstrlcpy(g_buf, messages[MSG_BOOKMARK_KEYS], CMD_LEN_MAX);
+ sprintkeys(bookmark, g_buf + strlen(g_buf), BM_MAX);
+ printprompt(g_buf);
fd = get_input(NULL);
}
@@ -4628,12 +4636,14 @@ nochange:
}
if (!get_kv_val(bookmark, newpath, fd, BM_MAX, TRUE)) {
- printwait(messages[MSG_INVBM_KEY], &presel);
+ clearprompt();
goto nochange;
}
- if (!xdiraccess(newpath))
+ if (!xdiraccess(newpath)) {
+ printwait(messages[MSG_ACCESS], &presel);
goto nochange;
+ }
if (strcmp(path, newpath) == 0)
break;
@@ -5194,8 +5204,8 @@ nochange:
}
if (sel == SEL_PLUGKEY) {
- xstrlcpy(g_buf, "pick plugin:", CMD_LEN_MAX);
- sprintkv(plug, g_buf + strlen(g_buf), PLUGIN_MAX);
+ xstrlcpy(g_buf, messages[MSG_PLUGIN_KEYS], CMD_LEN_MAX);
+ sprintkeys(plug, g_buf + strlen(g_buf), PLUGIN_MAX);
printprompt(g_buf);
r = get_input(NULL);
tmp = get_kv_val(plug, NULL, r, PLUGIN_MAX, FALSE);