]> Sergey Matveev's repositories - nnn.git/commitdiff
Remember detail/light mode of context
authorArun Prakash Jana <engineerarun@gmail.com>
Tue, 9 Apr 2019 14:55:17 +0000 (20:25 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Tue, 9 Apr 2019 14:55:17 +0000 (20:25 +0530)
src/nnn.c

index 344b04d215e9f3260c795f9fc741197de44d8547..8fa281c1df0d1051da41edc88e4dc43ae9a9b280 100644 (file)
--- 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;