From 0069a0253c73567b131ddc75d57e29d405d11a72 Mon Sep 17 00:00:00 2001 From: Spencer Baugh Date: Wed, 19 Apr 2023 17:44:54 -0400 Subject: [PATCH] Set PAGER=cat in comint.el Paging is useless and annoying in comint-derived commands such as async-shell-command and M-x shell. It is a frequent footgun for new Emacs users when they try to run commands which start a pager in such modes. I know a number of users who set PAGER=cat in their Emacs to avoid it. Simply adding (setenv "PAGER" "cat") globally is not correct, since that will break modes like term, which support paging quite well. It's only and exactly the comint-derived modes which don't need paging. Changing the default to "cat" in this way might be a bit controversial... * lisp/comint.el (comint-pager): Add, defaulted to "cat". (comint-exec-1): Use comint-pager to set PAGER. --- lisp/comint.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lisp/comint.el b/lisp/comint.el index 682b555a33c..915907c1bb9 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -258,6 +258,15 @@ comint-input-ring-file-name file) :group 'comint) +(defcustom comint-pager "cat" + "If non-nil, the value to use for PAGER. +gWhen this is nil, comint doesn't set PAGER at all." + :version "30.1" + :type '(choice (const :tag "Don't set PAGER" nil) + (const :tag "cat" "cat") + string) + :group 'comint) + (defvar comint-input-ring-file-prefix nil "The prefix to skip when parsing the input ring file. This is useful in Zsh when the extended_history option is on.") @@ -864,6 +873,7 @@ comint-exec-1 (nconc (comint-term-environment) (list (format "INSIDE_EMACS=%s,comint" emacs-version)) + (when comint-pager (list (format "PAGER=%s" comint-pager))) process-environment)) (default-directory (if (file-accessible-directory-p default-directory) -- 2.30.2