aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nnn.c69
1 files changed, 40 insertions, 29 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 344b04d..8fa281c 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1869,35 +1869,6 @@ static int xlink(char *suffix, char *path, char *buf, int type)
return count;
}
-static void savecurctx(settings *curcfg, char *path, char *curname, int r /* next context num */)
-{
- settings cfg = *curcfg;
-
-#ifdef DIR_LIMITED_COPY
- g_crc = 0;
-#endif
- /* Save current context */
- xstrlcpy(g_ctx[cfg.curctx].c_name, curname, NAME_MAX + 1);
- g_ctx[cfg.curctx].c_cfg = cfg;
-
- if (g_ctx[r].c_cfg.ctxactive) /* Switch to saved context */
- cfg = g_ctx[r].c_cfg;
- else { /* Setup a new context from current context */
- g_ctx[r].c_cfg.ctxactive = 1;
- xstrlcpy(g_ctx[r].c_path, path, PATH_MAX);
- g_ctx[r].c_last[0] = '\0';
- xstrlcpy(g_ctx[r].c_name, curname, NAME_MAX + 1);
- g_ctx[r].c_fltr[0] = g_ctx[r].c_fltr[1] = '\0';
- g_ctx[r].p_fltr = g_ctx[r].c_fltr + 1;
- g_ctx[r].c_cfg = cfg;
- g_ctx[r].c_cfg.runscript = 0;
- }
-
- cfg.curctx = r;
-
- *curcfg = cfg;
-}
-
static bool parsebmstr(void)
{
int i = 0;
@@ -2204,6 +2175,40 @@ static void printent_long(const struct entry *ent, int sel, uint namecols)
static void (*printptr)(const struct entry *ent, int sel, uint namecols) = &printent_long;
+static void savecurctx(settings *curcfg, char *path, char *curname, int r /* next context num */)
+{
+ settings cfg = *curcfg;
+
+#ifdef DIR_LIMITED_COPY
+ g_crc = 0;
+#endif
+ /* Save current context */
+ xstrlcpy(g_ctx[cfg.curctx].c_name, curname, NAME_MAX + 1);
+ g_ctx[cfg.curctx].c_cfg = cfg;
+
+ if (g_ctx[r].c_cfg.ctxactive) { /* Switch to saved context */
+ /* Switch light/detail mode */
+ if (cfg.showdetail != g_ctx[r].c_cfg.showdetail)
+ /* set the reverse */
+ printptr = cfg.showdetail ? &printent : &printent_long;
+
+ cfg = g_ctx[r].c_cfg;
+ } else { /* Setup a new context from current context */
+ g_ctx[r].c_cfg.ctxactive = 1;
+ xstrlcpy(g_ctx[r].c_path, path, PATH_MAX);
+ g_ctx[r].c_last[0] = '\0';
+ xstrlcpy(g_ctx[r].c_name, curname, NAME_MAX + 1);
+ g_ctx[r].c_fltr[0] = g_ctx[r].c_fltr[1] = '\0';
+ g_ctx[r].p_fltr = g_ctx[r].c_fltr + 1;
+ g_ctx[r].c_cfg = cfg;
+ g_ctx[r].c_cfg.runscript = 0;
+ }
+
+ cfg.curctx = r;
+
+ *curcfg = cfg;
+}
+
/*
* Gets only a single line (that's what we need
* for now) or shows full command output in pager.
@@ -3929,6 +3934,12 @@ nochange:
path = g_ctx[r].c_path;
lastdir = g_ctx[r].c_last;
lastname = g_ctx[r].c_name;
+
+ /* Switch light/detail mode */
+ if (cfg.showdetail != g_ctx[r].c_cfg.showdetail)
+ /* Set the reverse */
+ printptr = cfg.showdetail ? &printent : &printent_long;
+
cfg = g_ctx[r].c_cfg;
cfg.curctx = r;