]> Sergey Matveev's repositories - nnn.git/commitdiff
Get pager with arg
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 1 Dec 2018 01:49:56 +0000 (07:19 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 1 Dec 2018 01:49:56 +0000 (07:19 +0530)
src/nnn.c
src/nnn.h

index 7b41be677183d9f801743dbdc3a7452659a9890c..147a35469447f294e64fc085e479c560ecffe0d4 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -292,6 +292,7 @@ static uint idle;
 static uint idletimeout, copybufpos, copybuflen;
 static char *copier;
 static char *editor, *editor_arg;
+static char *pager, *pager_arg;
 static blkcnt_t ent_blocks;
 static blkcnt_t dir_blocks;
 static ulong num_files;
@@ -863,8 +864,11 @@ static char *xgetenv(const char *name, char *fallback)
        return value && value[0] ? value : fallback;
 }
 
-/* Parse a string to return program and argument */
-static int getprogarg(char *prog, char **arg)
+/*
+ * Parse a string to get program and argument
+ * NOTE: original string may be modified
+ */
+static void getprogarg(char *prog, char **arg)
 {
        char *argptr;
 
@@ -878,13 +882,13 @@ static int getprogarg(char *prog, char **arg)
 
                /* Make sure there are no more args */
                while (*argptr) {
-                       if (*argptr == ' ')
-                               return -1;
+                       if (*argptr == ' ') {
+                               fprintf(stderr, "Too many %s args\n", prog);
+                               exit(1);
+                       }
                        ++argptr;
                }
        }
-
-       return 0;
 }
 
 /* Check if a dir exists, IS a dir and is readable */
@@ -3597,11 +3601,13 @@ int main(int argc, char *argv[])
        if (getuid() == 0 || getenv("NNN_SHOW_HIDDEN"))
                cfg.showhidden = 1;
 
+       /* Get VISUAL/EDITOR */
        editor = xgetenv("VISUAL", xgetenv("EDITOR", "vi"));
-       if (getprogarg(editor, &editor_arg) < 0) {
-               fprintf(stderr, "Too many editor args\n");
-               exit(1);
-       }
+       getprogarg(editor, &editor_arg);
+
+       /* Get PAGER */
+       pager = xgetenv("PAGER", "less");
+       getprogarg(pager, &pager_arg);
 
        /* Edit text in EDITOR, if opted */
        if (getenv("NNN_USE_EDITOR"))
index 03b30404cc1a62fad98e3d6b0f14fa56b60149ed..c635e4d62a4d0a2f4c95e31dd8aa1bd30b7ceba4 100644 (file)
--- a/src/nnn.h
+++ b/src/nnn.h
@@ -227,7 +227,7 @@ static struct key bindings[] = {
        { 'R',            SEL_RUNSCRIPT, "sh",   "SHELL" },
        /* Run command with argument */
        { 'e',            SEL_RUNARG,    "",     "VISUAL" },
-       { 'p',            SEL_RUNARG,    "less", "PAGER" },
+       { 'p',            SEL_RUNARG,    "",     "PAGER" },
        /* Lock screen */
        { 'L',            SEL_LOCK,      "",     "" },
        /* Quit a context */