[PATCH 2/2] pager: implement core.pagerEnv in config
From: Eric Wong <hidden>
Date: 2016-08-01 01:06:21
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
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 <redacted> --- Documentation/config.txt | 7 +++++++ pager.c | 5 ++++- t/t7006-pager.sh | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 8b1aee4..6c20269 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 2f2cadc..cc2df7c 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 e4fc5c8..0c482fc 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
--
EW