From: Arun Prakash Jana Date: Wed, 28 Apr 2021 06:12:57 +0000 (+0530) Subject: Fix #976: check external selection in 'c'urrent / 's'el prompt X-Git-Tag: v4.1~125 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=163102e8aeed9f2f606c32f4791a277045df2dd5;p=nnn.git Fix #976: check external selection in 'c'urrent / 's'el prompt --- diff --git a/src/nnn.c b/src/nnn.c index 9ab807c3..a89689e5 100644 --- 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) {