about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-08-01 00:08:45 +0000
committerEric Wong <e@80x24.org>2016-08-01 00:51:42 +0000
commit1563ef177f9c1ee990bb3547f16bd7568a17379a (patch)
tree1bd4167fbec1e9570785688d8c1b262c650f5092
parent992d30436af40b694d3bd69e1afdb0b1d0f6b3b7 (diff)
downloadgit-svn-pager-env.tar.gz
This allows overriding the build-time PAGER_ENV variable
at run-time.

Inspired by part 1 of an idea from Kyle J. McKay at:
https://public-inbox.org/git/62DB6DEF-8B39-4481-BA06-245BF45233E5@gmail.com/

Signed-off-by: Eric Wong <e@80x24.org>
-rw-r--r--Documentation/config.txt7
-rw-r--r--pager.c5
-rwxr-xr-xt/t7006-pager.sh14
3 files changed, 25 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 8b1aee4b3b..6c202696bd 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -714,6 +714,13 @@ Likewise, when the `LV` environment variable is unset, Git sets it
 to `-c`.  You can override this setting by exporting `LV` with
 another value or setting `core.pager` to `lv +c`.
 
+core.pagerEnv::
+        Environment for running `core.pager`.
++
+Defaults to the value set at build, usually `LESS=FRX LV=-c`.
+On platforms where `more` and `less` are the same binary,
+`LESS=FRX LV=-c MORE=FRX` is appropriate.
+
 core.whitespace::
         A comma separated list of common whitespace problems to
         notice.  'git diff' will use `color.diff.whitespace` to
diff --git a/pager.c b/pager.c
index 2f2cadc82b..cc2df7c72b 100644
--- a/pager.c
+++ b/pager.c
@@ -68,7 +68,10 @@ const char *git_pager(int stdout_is_tty)
 
 static void setup_pager_env(struct argv_array *env)
 {
-        const char *pager_env = stringify(PAGER_ENV);
+        const char *pager_env;
+
+        if (git_config_get_value("core.pagerenv", &pager_env))
+                pager_env = stringify(PAGER_ENV);
 
         while (*pager_env) {
                 struct strbuf buf = STRBUF_INIT;
diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
index e4fc5c826c..0c482fcc99 100755
--- a/t/t7006-pager.sh
+++ b/t/t7006-pager.sh
@@ -456,4 +456,18 @@ test_expect_success 'command with underscores does not complain' '
         test_cmp expect actual
 '
 
+test_expect_success TTY 'core.pagerEnv overrides build-time env' '
+        (
+                sane_unset LESS LV MORE &&
+                git config core.pagerEnv MORE=-R &&
+                PAGER="env >pager-env.out; wc" &&
+                export PAGER &&
+                test_terminal git log
+        ) &&
+        git config --unset core.pagerEnv &&
+        grep ^MORE=-R pager-env.out &&
+        grep -v ^LESS= pager-env.out &&
+        grep -v ^LV= pager-env.out
+'
+
 test_done