git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/3] setup_pager: set MORE=R

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 17, 2014, 19:57 UTC
Message-ID
<xmqqiotiwfdk.fsf@gitster.dls.corp.google.com>
In-Reply-To
<xmqqvbxiwh8y.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 29 quoted lines
> Jeff King <peff@peff.net> writes:
>
>> diff --git a/pager.c b/pager.c
>> index 90d237e..2303164 100644
>> --- a/pager.c
>> +++ b/pager.c
>> @@ -87,6 +87,10 @@ void setup_pager(void)
>>  		argv_array_push(&env, "LESS=FRSX");
>>  	if (!getenv("LV"))
>>  		argv_array_push(&env, "LV=-c");
>> +#ifdef PAGER_MORE_UNDERSTANDS_R
>> +	if (!getenv("MORE"))
>> +		argv_array_push(&env, "MORE=R");
>> +#endif
>>  	pager_process.env = argv_array_detach(&env, NULL);
>>  
>>  	if (start_command(&pager_process))
>
> Let me repeat from $gmane/240110:
>
>  - Can we generalize this a bit so that a builder can pass a list
>    of var=val pairs and demote the existing LESS=FRSX to just a
>    canned setting of such a mechanism?
>
> As we need to maintain this "set these environments when unset" here
> and also in git-sh-setup.sh, I think it is about time to do that
> clean-up.  Duplicating two settings was borderline OK, but seeing
> the third added fairly soon after the second was added tells me that
> the clean-up must come before adding the third.

Perhaps we can start it like this. Then pager.c can iterate over the PAGER_ENV string, parse out LESS=, LV=, etc., and do its thing.

We would also need to muck with git-sh-setup.sh but that file is already preprocessed in the Makefile, so we should be able to do something similar to "# @@BROKEN_PATH_FIX@@" there.

 Makefile         | 15 ++++++++++++++-
 config.mak.uname |  1 +
 2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index b4af1e2..c9e7847 100644
--- a/Makefile
+++ b/Makefile
@@ -342,6 +342,14 @@ all::
 # Define DEFAULT_HELP_FORMAT to "man", "info" or "html"
 # (defaults to "man") if you want to have a different default when
 # "git help" is called without a parameter specifying the format.
+#
+# Define PAGER_ENV to a SP separated VAR=VAL pairs to define
+# default environment variables to be passed when a pager is spawned, e.g.
+#
+#    PAGER_ENV = LESS=-FRSX LV=-c
+#
+# to say "export LESS=-FRSX (and LV=-c) if the environment variable
+# LESS (and LV) is not set, respectively".
 
 GIT-VERSION-FILE: FORCE
 	@$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -1506,6 +1514,10 @@ ifeq ($(PYTHON_PATH),)
 NO_PYTHON = NoThanks
 endif
 
+ifndef PAGER_ENV
+PAGER_ENV = LESS=-FRSX LV=-c
+endif
+
 QUIET_SUBDIR0  = +$(MAKE) -C # space to separate -C and subdir
 QUIET_SUBDIR1  =
 
@@ -1585,11 +1597,12 @@ PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH))
 TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
 DIFF_SQ = $(subst ','\'',$(DIFF))
 PERLLIB_EXTRA_SQ = $(subst ','\'',$(PERLLIB_EXTRA))
+PAGER_ENV_SQ = $(subst ','\'',$(PAGER_ENV))
 
 LIBS = $(GITLIBS) $(EXTLIBS)
 
 BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \
-	$(COMPAT_CFLAGS)
+	$(COMPAT_CFLAGS) -DPAGER_ENV='$(PAGER_ENV_SQ)'
 LIB_OBJS += $(COMPAT_OBJS)
 
 # Quote for C
diff --git a/config.mak.uname b/config.mak.uname
index 7d31fad..8aea8a6 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -188,6 +188,7 @@ ifeq ($(uname_S),FreeBSD)
 	endif
 	PYTHON_PATH = /usr/local/bin/python
 	HAVE_PATHS_H = YesPlease
+	PAGER_ENV = LESS=-FRSX LV=-c MORE=-R
 endif
 ifeq ($(uname_S),OpenBSD)
 	NO_STRCASESTR = YesPlease
Previous: Junio C HamanoNext: Junio C Hamano
Message 21 of 39 in “'git log' escape symbols shown as ESC[33 and ESC[m”
  1. YuriJan 17, 2014
  2. Jeff KingJan 17, 2014
  3. YuriJan 17, 2014
  4. Jeff KingJan 17, 2014
  5. YuriJan 17, 2014
  6. Jeff KingJan 17, 2014
  7. YuriJan 17, 2014
  8. Jonathan NiederJan 17, 2014
  9. Jeff KingJan 17, 2014
  10. Jeff KingJan 17, 2014
  11. 0/3 improved out-of-the-box color settingsJeff King, Jan 17, 2014
  12. 1/3 setup_pager: refactor LESS/LV environment settingJeff King, Jan 17, 2014
  13. 2/3 setup_pager: set MORE=RJeff King, Jan 17, 2014
  14. Kyle J. McKayJan 17, 2014
  15. Junio C HamanoJan 17, 2014
  16. Jeff KingJan 21, 2014
  17. Kyle J. McKayJan 21, 2014
  18. Jeff KingJan 23, 2014
  19. Junio C HamanoJan 23, 2014
  20. Junio C HamanoJan 17, 2014
  21. Junio C HamanoJan 17, 2014
  22. Junio C HamanoJan 17, 2014
  23. Jeff KingJan 21, 2014
  24. Junio C HamanoJan 21, 2014
  25. Jeff KingJan 21, 2014
  26. Junio C HamanoJan 21, 2014
  27. Jeff KingFeb 4, 2014
  28. Junio C HamanoFeb 4, 2014
  29. Jeff KingFeb 4, 2014
  30. YuriFeb 4, 2014
  31. Jeff KingFeb 4, 2014
  32. Junio C HamanoFeb 4, 2014
  33. YuriFeb 4, 2014
  34. Kyle J. McKayFeb 5, 2014
  35. 3/3 pager: disable colors for some known-bad configurationsJeff King, Jan 17, 2014
  36. YuriJan 17, 2014
  37. YuriJan 17, 2014
  38. YuriFeb 5, 2014
  39. Jeff KingFeb 5, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.