aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nnn.c36
-rw-r--r--src/nnn.h5
2 files changed, 22 insertions, 19 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 638aa9f..3929387 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -474,6 +474,7 @@ static char * const utils[] = {
#define MSG_BOOKMARK_KEYS 36
#define MSG_INVALID_REG 37
#define MSG_ORDER 38
+#define MSG_EDIT_SEL 39
static const char * const messages[] = {
"no traversal",
@@ -515,6 +516,7 @@ static const char * const messages[] = {
"bookmark keys:",
"invalid regex",
"toggle 'a'u / 'd'u / 'e'xtn / 'r'everse / 's'ize / 't'ime / 'v'ersion?",
+ "edit sel?",
};
/* Supported configuration environment variables */
@@ -3609,8 +3611,7 @@ static void show_help(const char *path)
"cP Copy sel here%-11ca Select all\n"
"cV Move sel here%-10c^V Copy/move sel as\n"
"cX Delete sel%-13c^X Delete entry\n"
- "cy List sel%-15c^Y Edit sel\n"
- "9o ^T Order toggle%-0c\n"
+ "9o ^T Order toggle%-11c^Y List, edit sel\n"
"1MISC\n"
"9! ^] Shell%-16c; ^F Fire plugin\n"
"c] Cmd prompt%-13c^P Pick plugin\n"
@@ -5223,23 +5224,28 @@ nochange:
plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
continue;
case SEL_SELLIST:
- if (listselbuf() || listselfile()) {
- if (cfg.filtermode)
- presel = FILTER;
- break;
+ if (!listselbuf() && !listselfile()) {
+ printwait(messages[MSG_0_SELECTED], &presel);
+ goto nochange;
}
- printwait(messages[MSG_0_SELECTED], &presel);
- goto nochange;
- case SEL_SELEDIT:
+
+ r = get_input(messages[MSG_EDIT_SEL]);
+ if (r != 'y' && r != 'Y') {
+ cfg.filtermode ? presel = FILTER : statusbar(path);
+ goto nochange;
+ }
+
r = editselection();
- if (r <= 0) {
- const char *msg
- = (!r ? messages[MSG_0_SELECTED] : messages[MSG_FAILED]);
- printwait(msg, &presel);
+ if (r <= 0) { /* Cannot be equal to 0 though as listing guards */
+ printwait(messages[MSG_FAILED], &presel);
goto nochange;
- } else if (cfg.x11)
+ }
+
+ if (cfg.x11)
plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
- break;
+
+ cfg.filtermode ? presel = FILTER : statusbar(path);
+ goto nochange;
case SEL_CP: // fallthrough
case SEL_MV: // fallthrough
case SEL_CPMVAS: // fallthrough
diff --git a/src/nnn.h b/src/nnn.h
index 25a2f95..b0e712b 100644
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -73,7 +73,6 @@ enum action {
SEL_SELMUL,
SEL_SELALL,
SEL_SELLIST,
- SEL_SELEDIT,
SEL_CP,
SEL_MV,
SEL_CPMVAS,
@@ -191,10 +190,8 @@ static struct key bindings[] = {
{ CONTROL('K'), SEL_SELMUL },
/* Select all files in current dir */
{ 'a', SEL_SELALL },
- /* Show list of copied files */
+ /* List, edit selection */
{ 'y', SEL_SELLIST },
- /* Edit selection buffer */
- { CONTROL('Y'), SEL_SELEDIT },
/* Copy from selection buffer */
{ 'P', SEL_CP },
/* Move from selection buffer */