commit 5a46b8fb25b0f4f073920ca2b82ad96828475a99
parent e7236662560ecc687b5349b825a438aed30f5874
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date: Fri, 13 Dec 2019 00:36:30 +0530
Sync file paths correctly for clipboard copy
Diffstat:
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/nnn.c b/src/nnn.c
@@ -4864,26 +4864,34 @@ nochange:
if (rangesel)
rangesel = FALSE;
- /* Write the path to selection file to avoid flush */
- if (!(dents[cur].flags & FILE_SELECTED)) {
+ /* Toggle selection status */
+ dents[cur].flags ^= FILE_SELECTED;
+
+ if (dents[cur].flags & FILE_SELECTED) {
+ ++nselected;
utmp = selbufpos;
selbufpos = lastappendpos;
appendfpath(newpath, mkpath(path, dents[cur].name, newpath));
writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
- if (cfg.x11)
- plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
lastappendpos = selbufpos;
selbufpos = utmp;
+ } else {
+ --nselected;
+ if (nselected) {
+ utmp = selbufpos;
+ updateselbuf(path, newpath);
+ writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
+ lastappendpos = selbufpos;
+ selbufpos = utmp;
+ } else
+ writesel(NULL, 0);
}
- /* Toggle selection status */
- dents[cur].flags ^= FILE_SELECTED;
- (dents[cur].flags & FILE_SELECTED) ? ++nselected : --nselected;
+ if (cfg.x11)
+ plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
- if (!nselected) {
- writesel(NULL, 0);
+ if (!nselected)
unlink(g_selpath);
- }
/* move cursor to the next entry if this is not the last entry */
if (!cfg.picker && cur != ndents - 1)