From f9264577d295be0ccb788224e677e4615e53f843 Mon Sep 17 00:00:00 2001
From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Sun, 21 Apr 2019 19:53:13 +0530
Subject: [PATCH] Support copymode across contexts

---
 src/nnn.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/nnn.c b/src/nnn.c
index 0e633b9d..ff2ce824 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2139,6 +2139,7 @@ static void (*printptr)(const struct entry *ent, int sel, uint namecols) = &prin
 static void savecurctx(settings *curcfg, char *path, char *curname, int r /* next context num */)
 {
 	settings cfg = *curcfg;
+	bool copymode = cfg.copymode ? TRUE : FALSE;
 
 #ifdef DIR_LIMITED_COPY
 	g_crc = 0;
@@ -2164,6 +2165,8 @@ static void savecurctx(settings *curcfg, char *path, char *curname, int r /* nex
 		g_ctx[r].c_cfg.runplugin = 0;
 	}
 
+	/* Continue copy mode */
+	cfg.copymode = copymode;
 	cfg.curctx = r;
 
 	*curcfg = cfg;
@@ -4002,13 +4005,15 @@ nochange:
 			}
 			return;
 		case SEL_QUITCTX:
-			fd = cfg.curctx;
+			fd = cfg.curctx; /* fd used as tmp var */
 			for (r = (fd + 1) & ~CTX_MAX;
 			     (r != fd) && !g_ctx[r].c_cfg.ctxactive;
 			     r = ((r + 1) & ~CTX_MAX)) {
 			};
 
 			if (r != fd) {
+				bool copymode = cfg.copymode ? TRUE : FALSE;
+
 				g_ctx[fd].c_cfg.ctxactive = 0;
 
 				/* Switch to next active context */
@@ -4023,6 +4028,8 @@ nochange:
 
 				cfg = g_ctx[r].c_cfg;
 
+				/* Continue copy mode */
+				cfg.copymode = copymode;
 				cfg.curctx = r;
 				setdirwatch();
 				goto begin;
-- 
2.51.0