From 88fdeab114c9e746a66758a16b2fe50aaab45624 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Wed, 19 Jan 2022 21:57:38 -0800 Subject: [PATCH 3/4] Ensure 'eshell-output-object' always returns nil for consistency This prevents functions like 'eshell-print' from writing doubled output when run in Eshell. Previously, the result would be: ~ $ eshell-print hi hihi * lisp/eshell/esh-io.el (eshell-output-object): Always return nil. --- lisp/eshell/esh-io.el | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el index e457f65c18..fc1124561a 100644 --- a/lisp/eshell/esh-io.el +++ b/lisp/eshell/esh-io.el @@ -491,14 +491,19 @@ eshell-output-object-to-target object) (defun eshell-output-object (object &optional handle-index handles) - "Insert OBJECT, using HANDLE-INDEX specifically)." + "Insert OBJECT, using HANDLE-INDEX specifically. +If HANDLE-INDEX is nil, output to `eshell-output-handle'. +HANDLES is the set of file handles to use; if nil, use +`eshell-current-handles'." (let ((target (car (aref (or handles eshell-current-handles) (or handle-index eshell-output-handle))))) - (if (and target (not (listp target))) - (eshell-output-object-to-target object target) - (while target - (eshell-output-object-to-target object (car target)) - (setq target (cdr target)))))) + (if (listp target) + (while target + (eshell-output-object-to-target object (car target)) + (setq target (cdr target))) + (eshell-output-object-to-target object target) + ;; Explicitly return nil to match the list case above. + nil))) (provide 'esh-io) ;;; esh-io.el ends here -- 2.25.1