[PATCH] pager: config variable pager.program
Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
I'd like to use another pager (or other options) with git than the
normal pager. Normally I would not want the -R option with less but
for git less should show colors.
---
Documentation/config.txt | 5 +++++
pager.c | 16 +++++++++++++++-
2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 465eb13..96429b6 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -116,6 +116,11 @@ apply.whitespace::
Tells `git-apply` how to handle whitespaces, in the same way
as the '--whitespace' option. See gitlink:git-apply[1].
+pager.program::
+ Use this program as pager. git will try this configuration
+ variable first, then the 'PAGER' environment variable and
+ "less" as fallback.
+
diff.color::
When true (or `always`), always use colors in patch.
When false (or `never`), never. When set to `auto`, use
diff --git a/pager.c b/pager.c
index 280f57f..3f753f6 100644
--- a/pager.c
+++ b/pager.c
@@ -5,6 +5,18 @@ #include "cache.h"
* something different on Windows, for example.
*/
+static const char *pager = NULL;
+
+static int git_pager_config(const char *var, const char *value)
+{
+ if (!strcmp(var, "pager.program")) {
+ if (value)
+ pager = strdup(value);
+ return 0;
+ }
+ return 0;
+}
+
static void run_pager(const char *pager)
{
execlp(pager, pager, NULL);
@@ -15,10 +27,12 @@ void setup_pager(void)
{
pid_t pid;
int fd[2];
- const char *pager = getenv("PAGER");
if (!isatty(1))
return;
+ git_config(git_pager_config);
+ if (!pager)
+ pager = getenv("PAGER");
if (!pager)
pager = "less";
else if (!*pager || !strcmp(pager, "cat"))
--
1.4.2.rc2.g688a