diff --git a/lisp/simple.el b/lisp/simple.el index 857e0fc001..7212686add 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3336,6 +3336,15 @@ async-shell-command-display-buffer :group 'shell :version "26.1") +(defcustom async-shell-command-width nil + "Number of columns available for shell command. +If nil, use the shell default number (usually 80). +If a positive integer, use a fixed width." + :type '(choice (const :tag "Use system limit" nil) + (integer :tag "Fixed width" :value 80)) + :group 'shell + :version "27.1") + (defcustom shell-command-dont-erase-buffer nil "If non-nil, output buffer is not erased between shell commands. Also, a non-nil value sets the point in the output buffer @@ -3599,8 +3608,13 @@ shell-command (with-current-buffer buffer (shell-command--save-pos-or-erase) (setq default-directory directory) - (setq proc - (start-process-shell-command "Shell" buffer command)) + (let ((process-environment + (if (natnump async-shell-command-width) + (cons (format "COLUMNS=%d" async-shell-command-width) + process-environment) + process-environment))) + (setq proc + (start-process-shell-command "Shell" buffer command))) (setq mode-line-process '(":%s")) (require 'shell) (shell-mode) (set-process-sentinel proc #'shell-command-sentinel)