From 3b2b6f2b46325bc74e3dd202fb000760b0a55fe9 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 6 Dec 2019 22:24:35 +0530 Subject: Fix only the last file path is copied to selection buffer --- src/nnn.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/nnn.c b/src/nnn.c index e5d1f56..4eb4112 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -306,7 +306,7 @@ static int ndents, cur, curscroll, total_dents = ENTRY_INCR; static int xlines, xcols; static int nselected; static uint idle; -static uint idletimeout, selbufpos, selbuflen; +static uint idletimeout, selbufpos, lastappendpos, selbuflen; static char *bmstr; static char *pluginstr; static char *opener; @@ -1007,6 +1007,8 @@ static void startselection(void) writesel(NULL, 0); selbufpos = 0; } + + lastappendpos = 0; } } @@ -4834,9 +4836,11 @@ nochange: /* Write the path to selection file to avoid flush */ if (!(dents[cur].flags & FILE_SELECTED)) { utmp = selbufpos; + selbufpos = lastappendpos; appendfpath(newpath, mkpath(path, dents[cur].name, newpath)); writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */ spawn(copier, NULL, NULL, NULL, F_NOTRACE); + lastappendpos = selbufpos; selbufpos = utmp; } @@ -4901,6 +4905,7 @@ nochange: /* Remember current selection buffer position */ utmp = selbufpos; + selbufpos = lastappendpos; for (r = selstartid; r <= selendid; ++r) if (!(dents[r].flags & FILE_SELECTED)) { @@ -4915,6 +4920,7 @@ nochange: writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */ spawn(copier, NULL, NULL, NULL, F_NOTRACE); /* Restore current selection buffer position */ + lastappendpos = selbufpos; selbufpos = utmp; } continue; -- cgit v1.2.3-70-g09d2