1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Allow checking specific Eshell handles for interactive output

This changes the default behavior of the function to check only stdout
for interactivity, but for most cases this should be what we want.

* lisp/eshell/esh-io.el (eshell-interactive-output-p): Pass HANDLES
and handle INDEX.

* lisp/eshell/em-term.el (eshell-visual-command-p): Check for
interactivity of both stdout and stderr.
This commit is contained in:
Jim Porter 2022-08-28 20:50:27 -07:00
parent 1be925faa1
commit 3d6c013a27
2 changed files with 15 additions and 7 deletions

View file

@ -153,7 +153,7 @@ behavior for short-lived processes, see bug#18108."
If either COMMAND or a subcommand in ARGS (e.g. git log) is a
visual command, returns non-nil."
(let ((command (file-name-nondirectory command)))
(and (eshell-interactive-output-p)
(and (eshell-interactive-output-p 'all)
(or (member command eshell-visual-commands)
(member (car args)
(cdr (assoc command eshell-visual-subcommands)))

View file

@ -407,12 +407,20 @@ it defaults to `insert'."
(error "Invalid redirection target: %s"
(eshell-stringify target)))))
(defun eshell-interactive-output-p ()
"Return non-nil if current handles are bound for interactive display."
(and (eq (car (aref eshell-current-handles
eshell-output-handle)) t)
(eq (car (aref eshell-current-handles
eshell-error-handle)) t)))
(defun eshell-interactive-output-p (&optional index handles)
"Return non-nil if the specified handle is bound for interactive display.
HANDLES is the set of handles to check; if nil, use
`eshell-current-handles'.
INDEX is the handle index to check. If nil, check
`eshell-output-handle'. If `all', check both
`eshell-output-handle' and `eshell-error-handle'."
(let ((handles (or handles eshell-current-handles))
(index (or index eshell-output-handle)))
(if (eq index 'all)
(and (eq (car (aref handles eshell-output-handle)) t)
(eq (car (aref handles eshell-error-handle)) t))
(eq (car (aref handles index)) t))))
(defvar eshell-print-queue nil)
(defvar eshell-print-queue-count -1)