]> Sergey Matveev's repositories - nnn.git/commitdiff
Handle number of contexts in a generic fashion
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 30 May 2020 00:26:12 +0000 (05:56 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 30 May 2020 00:37:53 +0000 (06:07 +0530)
This supports using a power of 2 number of contexts like 2, 4 or 8.
Note that the number of contexts are not backward compatible. So if
user is having 8 contexts and plans to use 4, his sessions with > 1
contexts open may break.

We can have a make option to enable 8 contexts. 4 remains default.

src/nnn.c

index eb1cb5233ba5041157f230b5910a7e20935b9d9d..3b3d2fa821cdae938f5cc7d51042637a23c81b84 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
 #define _ALIGNMENT 0x10 /* 16-byte alignment */
 #define _ALIGNMENT_MASK 0xF
 #define TMP_LEN_MAX 64
-#define CTX_MAX 4
 #define DOT_FILTER_LEN 7
 #define ASCII_MAX 128
 #define EXEC_ARGS_MAX 8
 #define LIST_FILES_MAX (1 << 16)
 #define SCROLLOFF 3
-#define MIN_DISPLAY_COLS 10
+#define CTX_MAX 4
+#define MIN_DISPLAY_COLS ((CTX_MAX * 2) + 2) /* Two chars for [ and ] */
 #define LONG_SIZE sizeof(ulong)
 #define ARCHIVE_CMD_LEN 16
 #define BLK_SHIFT_512 9
@@ -251,10 +251,10 @@ typedef struct {
        uint selmode    : 1;  /* Set when selecting files */
        uint showdetail : 1;  /* Clear to show fewer file info */
        uint ctxactive  : 1;  /* Context active or not */
-       uint reserved1  : 3;
+       uint reserved1  : 2;
        /* The following settings are global */
-       uint curctx     : 2;  /* Current context number */
        uint dircolor   : 1;  /* Current status of dir color */
+       uint curctx     : 3;  /* Current context number */
        uint picker     : 1;  /* Write selection to user-specified file */
        uint pickraw    : 1;  /* Write selection to sdtout before exit */
        uint nonavopen  : 1;  /* Open file on right arrow or `l` */