Function: eshell-extpipe--or-with-catch

eshell-extpipe--or-with-catch is a macro defined in em-extpipe.el.gz.

Signature

(eshell-extpipe--or-with-catch &rest DISJUNCTS)

Documentation

Evaluate DISJUNCTS like or but catch eshell-incomplete.

If eshell-incomplete is thrown during the evaluation of a disjunct, that disjunct yields nil.

Source Code

;; Defined in /usr/src/emacs/lisp/eshell/em-extpipe.el.gz
(defmacro eshell-extpipe--or-with-catch (&rest disjuncts)
  "Evaluate DISJUNCTS like `or' but catch `eshell-incomplete'.

If `eshell-incomplete' is thrown during the evaluation of a
disjunct, that disjunct yields nil."
  (cl-with-gensyms (result)
    `(let (,result)
       (or ,@(cl-loop for disjunct in disjuncts collect
                      `(if (catch 'eshell-incomplete
                             (ignore (setq ,result ,disjunct)))
                           nil
                         ,result))))))