|
|
@@ -1775,6 +1775,21 @@ static int xstrverscasecmp(const char * const s1, const char * const s2) |
|
|
|
|
|
|
|
static int (*cmpfn)(const char * const s1, const char * const s2) = &xstricmp; |
|
|
|
|
|
|
|
/* Return the integer value of a char representing HEX */ |
|
|
|
static char xchartohex(char c) |
|
|
|
{ |
|
|
|
if (xisdigit(c)) |
|
|
|
return c - '0'; |
|
|
|
|
|
|
|
if (c >= 'a' && c <= 'f') |
|
|
|
return c - 'a' + 10; |
|
|
|
|
|
|
|
if (c >= 'A' && c <= 'F') |
|
|
|
return c - 'A' + 10; |
|
|
|
|
|
|
|
return c; |
|
|
|
} |
|
|
|
|
|
|
|
static int setfilter(regex_t *regex, const char *filter) |
|
|
|
{ |
|
|
|
return regcomp(regex, filter, REG_NOSUB | REG_EXTENDED | REG_ICASE); |
|
|
@@ -3441,41 +3456,41 @@ static void show_help(const char *path) |
|
|
|
FILE *fp; |
|
|
|
const char *start, *end; |
|
|
|
const char helpstr[] = { |
|
|
|
"\n" |
|
|
|
" NAVIGATION\n" |
|
|
|
"%-9cUp k Up%-20cPgUp ^U Scroll up\n" |
|
|
|
"%-7cDown j Down%-18cPgDn ^D Scroll down\n" |
|
|
|
"%-7cLeft h Parent%-16c~ ` @ - HOME, /, start, last\n" |
|
|
|
"%-9cg ^A Top%-15cRet Right l Open\n" |
|
|
|
"%-9cG ^E Bottom%-22c' First file\n" |
|
|
|
"%-12cb Pin CWD%-20c^B Go to pinned dir\n" |
|
|
|
"%-9c, ^/ Lead key%-14cN LeadN Context N\n" |
|
|
|
"%-6c(Sh)Tab Cycle context%-15cd Detail view toggle\n" |
|
|
|
"%-12c/ Filter%-17cIns ^N Nav-as-you-type toggle\n" |
|
|
|
"%-10cEsc Exit prompt%-13c^L F5 Redraw/clear prompt\n" |
|
|
|
"%-12c. Show/hide dots%-14c? Help, conf\n" |
|
|
|
"%-9cQ ^Q Quit%-24cq Quit context\n" |
|
|
|
"%-11c^G QuitCD%-1c\n" |
|
|
|
" FILES\n" |
|
|
|
"%-11c^O Open with...%-16cn Create new/link\n" |
|
|
|
"%-12cD File details%-12c^R F2 Rename/duplicate\n" |
|
|
|
"%-3cSpace ^J/a Sel toggle/all%-14cr Batch rename\n" |
|
|
|
"%-9cm ^K Sel range, clear%-12cM List sel\n" |
|
|
|
"%-12cP Copy sel here%-15cK Edit sel\n" |
|
|
|
"%-12cV Move sel here%-15cw Copy/move sel as\n" |
|
|
|
"%-12cX Delete sel%-17c^X Delete entry\n" |
|
|
|
"%-12cf Archive%-18co ^F Archive ops\n" |
|
|
|
"%-12ce Edit in EDITOR%-14cp Open in PAGER\n" |
|
|
|
" ORDER TOGGLES\n" |
|
|
|
"%-12cA Apparent du%-17cS du\n" |
|
|
|
"%-12cz Size%-24ct Time\n" |
|
|
|
"%-12cE Extension%-1c\n" |
|
|
|
" MISC\n" |
|
|
|
"%-9c! ^] Shell%-21c; x Plugin key\n" |
|
|
|
"%-12cC Execute file%-13ci ^V Pick plugin\n" |
|
|
|
"%-12cs Manage session%-14c= Launch app\n" |
|
|
|
"%-12cc Connect remote%-14cu Unmount\n" |
|
|
|
"%-9c] ^P Prompt%-22cL Lock\n" |
|
|
|
"0\n" |
|
|
|
"1NAVIGATION\n" |
|
|
|
"9Up k Up%-20cPgUp ^U Scroll up\n" |
|
|
|
"7Down j Down%-18cPgDn ^D Scroll down\n" |
|
|
|
"7Left h Parent%-16c~ ` @ - HOME, /, start, last\n" |
|
|
|
"9g ^A Top%-15cRet Right l Open\n" |
|
|
|
"9G ^E Bottom%-22c' First file\n" |
|
|
|
"cb Pin CWD%-20c^B Go to pinned dir\n" |
|
|
|
"9c, ^/ Lead key%-14cN LeadN Context N\n" |
|
|
|
"6(Sh)Tab Cycle context%-15cd Detail view toggle\n" |
|
|
|
"c/ Filter%-17cIns ^N Nav-as-you-type toggle\n" |
|
|
|
"aEsc Exit prompt%-13c^L F5 Redraw/clear prompt\n" |
|
|
|
"c. Show/hide dots%-14c? Help, conf\n" |
|
|
|
"9Q ^Q Quit%-24cq Quit context\n" |
|
|
|
"b^G QuitCD%-1c\n" |
|
|
|
"1FILES\n" |
|
|
|
"b^O Open with...%-16cn Create new/link\n" |
|
|
|
"cD File details%-12c^R F2 Rename/duplicate\n" |
|
|
|
"3Space ^J/a Sel toggle/all%-14cr Batch rename\n" |
|
|
|
"9m ^K Sel range, clear%-12cM List sel\n" |
|
|
|
"cP Copy sel here%-15cK Edit sel\n" |
|
|
|
"cV Move sel here%-15cw Copy/move sel as\n" |
|
|
|
"cX Delete sel%-17c^X Delete entry\n" |
|
|
|
"cf Archive%-18co ^F Archive ops\n" |
|
|
|
"ce Edit in EDITOR%-14cp Open in PAGER\n" |
|
|
|
"1ORDER TOGGLES\n" |
|
|
|
"cA Apparent du%-17cS du\n" |
|
|
|
"cz Size%-24ct Time\n" |
|
|
|
"cE Extension%-1c\n" |
|
|
|
"1MISC\n" |
|
|
|
"9! ^] Shell%-21c; x Plugin key\n" |
|
|
|
"cC Execute file%-13ci ^V Pick plugin\n" |
|
|
|
"cs Manage session%-14c= Launch app\n" |
|
|
|
"cc Connect remote%-14cu Unmount\n" |
|
|
|
"9] ^P Prompt%-22cL Lock\n" |
|
|
|
}; |
|
|
|
|
|
|
|
fd = create_tmp_file(); |
|
|
@@ -3491,7 +3506,8 @@ static void show_help(const char *path) |
|
|
|
start = end = helpstr; |
|
|
|
while (*end) { |
|
|
|
if (*end == '\n') { |
|
|
|
xstrlcpy(g_buf, start, end - start + 2); |
|
|
|
snprintf(g_buf, CMD_LEN_MAX, "%*c%.*s", |
|
|
|
xchartohex(*start), ' ', (int)(end - start), start + 1); |
|
|
|
fprintf(fp, g_buf, ' ', ' '); |
|
|
|
start = end + 1; |
|
|
|
} |
|
|
|