commit 163102e8aeed9f2f606c32f4791a277045df2dd5
parent 7a7fd5fcabf8268fd635073f3f97c87986d193d4
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date: Wed, 28 Apr 2021 11:42:57 +0530
Fix #976: check external selection in 'c'urrent / 's'el prompt
Diffstat:
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/nnn.c b/src/nnn.c
@@ -1258,10 +1258,21 @@ static int get_input(const char *prompt)
return r;
}
+static bool isselfileempty(void)
+{
+ struct stat sb;
+
+ return (stat(selpath, &sb) == -1) || (!sb.st_size);
+}
+
static int get_cur_or_sel(void)
{
- if (selbufpos && ndents) {
- if (cfg.prefersel)
+ /* Check both local buffer and selection file for external selection */
+ if ((selbufpos || !isselfileempty()) && ndents) {
+ /* If selection is preferred and we have a local selection, return selection.
+ * Always show the prompt in case of an external selection.
+ */
+ if (cfg.prefersel && selbufpos)
return 's';
int choice = get_input(messages[MSG_CUR_SEL_OPTS]);
@@ -1379,13 +1390,6 @@ static size_t seltofile(int fd, uint_t *pcount)
return pos;
}
-static bool isselfileempty(void)
-{
- struct stat sb;
-
- return (stat(selpath, &sb) == -1) || (!sb.st_size);
-}
-
/* List selection from selection file (another instance) */
static bool listselfile(void)
{