]> git.eshelyaron.com Git - emacs.git/commitdiff
Stop subprocesses from using inherited or default PAGER
authorSpencer Baugh <sbaugh@janestreet.com>
Tue, 6 Aug 2024 16:39:37 +0000 (12:39 -0400)
committerEshel Yaron <me@eshelyaron.com>
Tue, 20 Aug 2024 14:09:50 +0000 (16:09 +0200)
At startup, set PAGER to "cat" so that any inherited or
default value of PAGER does not affect subprocesses of
Emacs.  Pagers generally won't work when a subprocess
runs under Emacs.
Users can use 'comint-pager' (or other customizations)
to tell subprocesses to use a different specific pager.
* lisp/startup.el (normal-top-level): Set PAGER to 'cat',
if 'cat' is available.  (Bug#72426)

(cherry picked from commit 7811a7d38bb7cb303dc66efa02eb95e75a03f39d)

lisp/startup.el

index f18795ae6ac29aa9000b1d89ae4908d50148b7b6..738eec772ec95545409c026b5d25557d4e49d355 100644 (file)
@@ -854,6 +854,12 @@ It is the default value of the variable `top-level'."
     ;; We are careful to do it late (after term-setup-hook), although the
     ;; new multi-tty code does not use $TERM any more there anyway.
     (setenv "TERM" "dumb")
+    ;; Similarly, a subprocess should not try to invoke a pager, as most
+    ;; pagers will fail in a dumb terminal.  Many programs default to
+    ;; using "less" when PAGER is unset, so set PAGER to "cat"; using cat
+    ;; as a pager is equivalent to not using a pager at all.
+    (when (executable-find "cat")
+      (setenv "PAGER" "cat"))
     ;; Remove DISPLAY from the process-environment as well.  This allows
     ;; `callproc.c' to give it a useful adaptive default which is either
     ;; the value of the `display' frame-parameter or the DISPLAY value