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

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

From
Jeff King <peff@peff.net>
Date
Jan 17, 2014, 04:21 UTC
Message-ID
<20140117042153.GB23443@sigill.intra.peff.net>
In-Reply-To
<20140117041430.GB19551@sigill.intra.peff.net>

When we run the pager, we always set "LESS=R" to tell the pager to pass through ANSI colors. On modern versions of FreeBSD, the system "more" can do the same trick.

Unlike "less", we may be dealing with various versions of "more" that do not understand the "R" option, but do know how to read options from MORE (Debian's "more" is an example). For this reason, we make the setting a compile-time option (but turn it on by default on FreeBSD).

Signed-off-by: Jeff King <peff@peff.net>
---
 Makefile         | 7 +++++++
 config.mak.uname | 1 +
 pager.c          | 4 ++++
 3 files changed, 12 insertions(+)
diff --git a/Makefile b/Makefile
index b4af1e2..6cd7a2a 100644
--- a/Makefile
+++ b/Makefile
@@ -312,6 +312,9 @@ all::
 # you want to use something different.  The value will be interpreted by the
 # shell at runtime when it is used.
 #
+# Define PAGER_MORE_UNDERSTANDS_R if your system's "more" pager
+# can pass-through ANSI colors using the "R" option.
+#
 # Define DEFAULT_EDITOR to a sensible editor command (defaults to "vi") if you
 # want to use something different.  The value will be interpreted by the shell
 # if necessary when it is used.  Examples:
@@ -1608,6 +1611,10 @@ DEFAULT_PAGER_CQ_SQ = $(subst ','\'',$(DEFAULT_PAGER_CQ))
 BASIC_CFLAGS += -DDEFAULT_PAGER='$(DEFAULT_PAGER_CQ_SQ)'
 endif
 
+ifdef PAGER_MORE_UNDERSTANDS_R
+BASIC_CFLAGS += -DPAGER_MORE_UNDERSTANDS_R
+endif
+
 ifdef SHELL_PATH
 SHELL_PATH_CQ = "$(subst ",\",$(subst \,\\,$(SHELL_PATH)))"
 SHELL_PATH_CQ_SQ = $(subst ','\'',$(SHELL_PATH_CQ))
diff --git a/config.mak.uname b/config.mak.uname
index 7d31fad..d63babc 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_MORE_UNDERSTANDS_R = YesPlease
 endif
 ifeq ($(uname_S),OpenBSD)
 	NO_STRCASESTR = YesPlease
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))
-- 
1.8.5.2.500.g8060133
Previous: Jeff KingNext: Kyle J. McKay
Message 13 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.