Function: eshell-set-output-handle

eshell-set-output-handle is a byte-compiled function defined in esh-io.el.gz.

Signature

(eshell-set-output-handle INDEX MODE &optional TARGET HANDLES)

Documentation

Set handle INDEX for the current HANDLES to point to TARGET using MODE.

If HANDLES is nil, use eshell-current-handles.

If the handle is currently set to its default value (see eshell-create-handles), this will overwrite the targets with the new target. Otherwise, it will append the new target to the current list of targets.

Source Code

;; Defined in /usr/src/emacs/lisp/eshell/esh-io.el.gz
(defun eshell-set-output-handle (index mode &optional target handles)
  "Set handle INDEX for the current HANDLES to point to TARGET using MODE.
If HANDLES is nil, use `eshell-current-handles'.

If the handle is currently set to its default value (see
`eshell-create-handles'), this will overwrite the targets with
the new target.  Otherwise, it will append the new target to the
current list of targets."
  (when target
    (let* ((handles (or handles eshell-current-handles))
           (handle (or (aref handles index)
                       (aset handles index (list (cons nil 1) nil))))
           (defaultp (cadr handle)))
      (when defaultp
        (cl-decf (cdar handle))
        (setcar handle (cons nil 1)))
      (let ((current (caar handle))
            (where (eshell-get-target target mode)))
        (when (and where (not (member where current)))
          (setcar (car handle) (append current (list where)))))
      (setcar (cdr handle) nil))))