Subject: bug#9907: 24.0.90; eshell:for command destructivly modifies list variables

From: Glenn Morris <[email-masked]>
Date: Thu, 17 Nov 2011 21:05:46 -0500

>> Sorry 'bout that.  Should be fixed now, but please confirm.
> It is working fine now, thanks.

It was pointed out on emacs-devel that eshell pipes no longer work
(it's because I just closed this bug...):

emacs -Q -f eshell
ls | grep foo

  -> Wrong type argument: symbolp, (quote nil)
   and a stale grep process in M-x list-processes

Debugger entered--Lisp error: (wrong-type-argument symbolp (quote nil))
  (setq (quote nil) (quote #<process grep>))
  eval((setq (quote nil) (quote #<process grep>)))
  (setq result (eval form))
  (ignore (setq result (eval form)))
  (catch (quote eshell-replace-command) (ignore (setq result (eval form))))
  (setq new-form (catch (quote eshell-replace-command) (ignore (setq result (eval form)))))
  (if (setq new-form (catch (quote eshell-replace-command) (ignore (setq result (eval form))))) (progn (eshell-manipulate "substituting replacement form" (setcar form (car new-form)) (setcdr form (cdr new-form))) (eshell-do-eval form synchronous-p)) (if (and (memq (car form) eshell-deferrable-commands) (not eshell-current-subjob-p) result (eshell-processp result)) (if synchronous-p (eshell/wait result) (eshell-manipulate "inserting ignore form" (setcar form (quote ignore)) (setcdr form nil)) (throw (quote eshell-defer) result)) (list (quote quote) result)))
  (let (result new-form) (if (setq new-form (catch (quote eshell-replace-command) (ignore (setq result (eval form))))) (progn (eshell-manipulate "substituting replacement form" (setcar form (car new-form)) (setcdr form (cdr new-form))) (eshell-do-eval form synchronous-p)) (if (and (memq (car form) eshell-deferrable-commands) (not eshell-current-subjob-p) result (eshell-processp result)) (if synchronous-p (eshell/wait result) (eshell-manipulate "inserting ignore form" (setcar form (quote ignore)) (setcdr form nil)) (throw (quote eshell-defer) result)) (list (quote quote) result))))
  (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch (quote eshell-replace-command) (ignore (setq result ...)))) (progn (eshell-manipulate "substituting replacement form" (setcar form (car new-form)) (setcdr form (cdr new-form))) (eshell-do-eval form synchronous-p)) (if (and (memq (car form) eshell-deferrable-commands) (not eshell-current-subjob-p) result (eshell-processp result)) (if synchronous-p (eshell/wait result) (eshell-manipulate "inserting ignore form" (setcar form ...) (setcdr form nil)) (throw (quote eshell-defer) result)) (list (quote quote) result))))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((setq (quote nil) (quote #<process grep>)) nil)
  (let (nextproc) (eshell-do-eval (quote (setq (quote nil) (quote #<process grep>))) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc)))
  eval((let (nextproc) (eshell-do-eval (quote (setq (quote nil) (quote #<process grep>))) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((let (nextproc) (eshell-do-eval (quote (setq (quote nil) (quote #<process grep>))) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil)
  (setcar args (eshell-do-eval (car args) synchronous-p))
  (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))
  (progn (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((progn (let (nextproc) (eshell-do-eval (quote (setq (quote nil) (quote #<process grep>))) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil (let ((eshell-in-pipeline-p (quote first))) (eshell-named-command* "ls"))) nil)
  (let ((eshell-current-handles (quote [nil (t . 1) (t . 1)]))) (eshell-do-eval (quote (progn (let (nextproc) (eshell-do-eval (quote (setq ... ...)) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil (let ((eshell-in-pipeline-p (quote first))) (eshell-named-command* "ls")))) nil))
  eval((let ((eshell-current-handles (quote [nil (t . 1) (t . 1)]))) (eshell-do-eval (quote (progn (let (nextproc) (eshell-do-eval (quote (setq ... ...)) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil (let ((eshell-in-pipeline-p (quote first))) (eshell-named-command* "ls")))) nil)))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((let ((eshell-current-handles (quote [nil (t . 1) (t . 1)]))) (eshell-do-eval (quote (progn (let (nextproc) (eshell-do-eval (quote (setq ... ...)) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil (let ((eshell-in-pipeline-p (quote first))) (eshell-named-command* "ls")))) nil)) nil)
  (setcar args (eshell-do-eval (car args) synchronous-p))
  (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))
  (progn (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((progn (let ((eshell-current-handles (quote [nil (t . 1) (t . 1)]))) (eshell-do-eval (quote (progn (let (nextproc) (eshell-do-eval (quote ...) nil) (eshell-set-output-handle 1 (quote append) nextproc) (eshell-set-output-handle 2 (quote append) nextproc) (setq tailproc (or tailproc nextproc))) nil (let ((eshell-in-pipeline-p ...)) (eshell-named-command* "ls")))) nil)) (eshell-process-identity tailproc)) nil)
  (let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn (let ((eshell-current-handles (quote [nil ... ...]))) (eshell-do-eval (quote (progn ... nil ...)) nil)) (eshell-process-identity tailproc))) nil))
  eval((let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn (let ((eshell-current-handles (quote [nil ... ...]))) (eshell-do-eval (quote (progn ... nil ...)) nil)) (eshell-process-identity tailproc))) nil)))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn (let ((eshell-current-handles (quote [nil ... ...]))) (eshell-do-eval (quote (progn ... nil ...)) nil)) (eshell-process-identity tailproc))) nil)) nil)
  (setcar args (eshell-do-eval (car args) synchronous-p))
  (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))
  (progn (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((prog1 (let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn (let ((eshell-current-handles ...)) (eshell-do-eval (quote ...) nil)) (eshell-process-identity tailproc))) nil)) (run-hooks (quote eshell-this-command-hook))) nil)
  (condition-case err (eshell-do-eval (quote (prog1 (let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn ... ...)) nil)) (run-hooks (quote eshell-this-command-hook)))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))
  eval((condition-case err (eshell-do-eval (quote (prog1 (let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn ... ...)) nil)) (run-hooks (quote eshell-this-command-hook)))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((condition-case err (eshell-do-eval (quote (prog1 (let ((eshell-in-pipeline-p (quote t)) tailproc) (eshell-do-eval (quote (progn ... ...)) nil)) (run-hooks (quote eshell-this-command-hook)))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))) nil)
  (let ((eshell-this-command-hook (quote (ignore)))) (eshell-do-eval (quote (condition-case err (eshell-do-eval (quote (prog1 (let ... ...) (run-hooks ...))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))) nil))
  eval((let ((eshell-this-command-hook (quote (ignore)))) (eshell-do-eval (quote (condition-case err (eshell-do-eval (quote (prog1 (let ... ...) (run-hooks ...))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))) nil)))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((let ((eshell-this-command-hook (quote (ignore)))) (eshell-do-eval (quote (condition-case err (eshell-do-eval (quote (prog1 (let ... ...) (run-hooks ...))) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))) nil)) nil)
  (setcar args (eshell-do-eval (car args) synchronous-p))
  (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))
  (progn (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((progn (let ((eshell-this-command-hook (quote (ignore)))) (eshell-do-eval (quote (condition-case err (eshell-do-eval (quote (prog1 ... ...)) nil) (error (run-hooks (quote eshell-this-command-hook)) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))) nil))) nil)
  (catch (quote top-level) (eshell-do-eval (quote (progn (let ((eshell-this-command-hook (quote ...))) (eshell-do-eval (quote (condition-case err ... ...)) nil)))) nil))
  eval((catch (quote top-level) (eshell-do-eval (quote (progn (let ((eshell-this-command-hook (quote ...))) (eshell-do-eval (quote (condition-case err ... ...)) nil)))) nil)))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((catch (quote top-level) (eshell-do-eval (quote (progn (let ((eshell-this-command-hook (quote ...))) (eshell-do-eval (quote (condition-case err ... ...)) nil)))) nil)) nil)
  (setcar args (eshell-do-eval (car args) synchronous-p))
  (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))
  (progn (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))
  (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args)))))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((progn (quote nil) (catch (quote top-level) (eshell-do-eval (quote (progn (let ((eshell-this-command-hook ...)) (eshell-do-eval (quote ...) nil)))) nil)) (run-hooks (quote eshell-post-command-hook))) nil)
  (let ((eshell-current-handles (quote [nil (t . 1) (t . 1)])) eshell-current-subjob-p) (eshell-do-eval (quote (progn (quote nil) (catch (quote top-level) (eshell-do-eval (quote (progn ...)) nil)) (run-hooks (quote eshell-post-command-hook)))) nil))
  eval((let ((eshell-current-handles (quote [nil (t . 1) (t . 1)])) eshell-current-subjob-p) (eshell-do-eval (quote (progn (quote nil) (catch (quote top-level) (eshell-do-eval (quote (progn ...)) nil)) (run-hooks (quote eshell-post-command-hook)))) nil)))
  (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn (\,@ ...))) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr (eshell-do-eval ...)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car (cadr args)) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and (listp letarg) (not ...)) (setcdr letarg (list ...)))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval (quote ...) (\, synchronous-p)))))) (eval form)) (t (if (and args (not (memq (car form) (quote (run-hooks))))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval (car args) synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form (catch ... ...)) (progn (eshell-manipulate "substituting replacement form" ... ...) (eshell-do-eval form synchronous-p)) (if (and ... ... result ...) (if synchronous-p ... ... ...) (list ... result))))))))
  (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (while (cadr (eshell-do-eval (car eshell-test-body))) (setcar eshell-command-body (if (cddr args) (\` (progn ...)) (eshell-copy-tree (cadr args)))) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body))) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree (car args)))) (setcar eshell-command-body (eshell-copy-tree (if (cadr ...) (cadr args) (car ...)))) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq (car form) (quote let)) (not (eq (car ...) (quote eshell-do-eval)))) (eshell-manipulate "evaluating let args" (dolist (letarg (car args)) (if (and ... ...) (setcdr letarg ...))))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args (\` (eshell-do-eval ... ...))))) (eval form)) (t (if (and args (not (memq (car form) (quote ...)))) (eshell-manipulate (format "evaluating arguments to `%s'" (symbol-name (car form))) (while args (setcar args (eshell-do-eval ... synchronous-p)) (setq args (cdr args))))) (cond ((eq (car form) (quote progn)) (car (last form))) ((eq (car form) (quote prog1)) (cadr form)) (t (let (result new-form) (if (setq new-form ...) (progn ... ...) (if ... ... ...))))))))
  (cond ((not (listp form)) (list (quote quote) (eval form))) ((memq (car form) (quote (quote function))) form) (t (when (eq (car form) (quote eshell-do-eval)) (setq form (cadr (cadr form)))) (if (eshell-macrop (car form)) (let ((exp (eshell-copy-tree (macroexpand form)))) (eshell-manipulate (format "expanding macro `%s'" (symbol-name (car form))) (setcar form (car exp)) (setcdr form (cdr exp))))) (let ((args (cdr form))) (cond ((eq (car form) (quote while)) (when (car eshell-command-body) (assert (not synchronous-p)) (eshell-do-eval (car eshell-command-body)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (eshell-copy-tree ...))) (while (cadr (eshell-do-eval ...)) (setcar eshell-command-body (if ... ... ...)) (eshell-do-eval (car eshell-command-body) synchronous-p) (setcar eshell-command-body nil) (setcar eshell-test-body (eshell-copy-tree ...))) (setcar eshell-command-body nil)) ((eq (car form) (quote if)) (if (car eshell-command-body) (progn (assert ...) (eshell-do-eval ...)) (unless (car eshell-test-body) (setcar eshell-test-body ...)) (setcar eshell-command-body (eshell-copy-tree ...)) (eshell-do-eval (car eshell-command-body) synchronous-p)) (setcar eshell-command-body nil) (setcar eshell-test-body nil)) ((eq (car form) (quote setcar)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((eq (car form) (quote setcdr)) (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)) (eval form)) ((memq (car form) (quote (let catch condition-case unwind-protect))) (if (and (eq ... ...) (not ...)) (eshell-manipulate "evaluating let args" (dolist ... ...))) (unless (eq (car form) (quote unwind-protect)) (setq args (cdr args))) (unless (eq (caar args) (quote eshell-do-eval)) (eshell-manipulate "handling special form" (setcar args ...))) (eval form)) (t (if (and args (not ...)) (eshell-manipulate (format "evaluating arguments to `%s'" ...) (while args ... ...))) (cond ((eq ... ...) (car ...)) ((eq ... ...) (cadr form)) (t (let ... ...))))))))
  eshell-do-eval((let ((eshell-current-handles (quote [nil (t . 1) (t . 1)])) eshell-current-subjob-p) (eshell-do-eval (quote (progn (quote nil) (catch (quote top-level) (eshell-do-eval (quote (progn ...)) nil)) (run-hooks (quote eshell-post-command-hook)))) nil)))
  (setq retval (eshell-do-eval eshell-current-command))
  (ignore (setq retval (eshell-do-eval eshell-current-command)))
  (catch (quote eshell-defer) (ignore (setq retval (eshell-do-eval eshell-current-command))))
  (let* (retval (proc (catch (quote eshell-defer) (ignore (setq retval (eshell-do-eval eshell-current-command)))))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval)))
  (progn (let* (retval (proc (catch (quote eshell-defer) (ignore (setq retval (eshell-do-eval eshell-current-command)))))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval))))
  (if eshell-current-command (progn (let* (retval (proc (catch (quote eshell-defer) (ignore (setq retval ...))))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval)))))
  (when eshell-current-command (let* (retval (proc (catch (quote eshell-defer) (ignore (setq retval (eshell-do-eval eshell-current-command)))))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval))))
  (progn (setq eshell-last-async-proc nil) (when eshell-current-command (let* (retval (proc (catch (quote eshell-defer) (ignore (setq retval ...))))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval)))))
  (condition-case err (progn (setq eshell-last-async-proc nil) (when eshell-current-command (let* (retval (proc (catch (quote eshell-defer) (ignore ...)))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval))))) (error (error (error-message-string err))))
  (eshell-condition-case err (progn (setq eshell-last-async-proc nil) (when eshell-current-command (let* (retval (proc (catch (quote eshell-defer) (ignore ...)))) (if (eshell-processp proc) (ignore (setq eshell-last-async-proc proc)) (cadr retval))))) (error (error (error-message-string err))))
  eshell-resume-eval()
  (catch (quote eshell-incomplete) (eshell-resume-eval))
  (let ((delim (catch (quote eshell-incomplete) (eshell-resume-eval)))) (if (listp delim) (setq delim (car delim))) (if (and delim (not (eq delim t))) (error "Unmatched delimiter: %c" delim)))
  (if eshell-current-command (setcdr (last (cdr eshell-current-command)) (list (\` (let ((here (and ... ...))) (\, (and input (\` ...))) (if here (eshell-update-markers here)) (eshell-do-eval (quote (\, command))))))) (and eshell-debug-command (with-current-buffer (get-buffer-create "*eshell last cmd*") (erase-buffer) (insert "command: \"" input "\"\n"))) (setq eshell-current-command command) (let ((delim (catch (quote eshell-incomplete) (eshell-resume-eval)))) (if (listp delim) (setq delim (car delim))) (if (and delim (not (eq delim t))) (error "Unmatched delimiter: %c" delim))))
  eshell-eval-command((let ((eshell-current-handles (quote [nil (t . 1) (t . 1)])) eshell-current-subjob-p) (eshell-do-eval (quote (progn (quote nil) (catch (quote top-level) (eshell-do-eval (quote (progn ...)) nil)) (run-hooks (quote eshell-post-command-hook)))) nil)) "ls | grep foo")
  (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input))
  (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))
  (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input))))
  (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much))
  (progn (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much)))
  (if cmd (progn (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much))))
  (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much)))
  (let ((cmd (eshell-parse-command-input eshell-last-output-end (1- (point))))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much))))
  (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- (point)))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd (eshell-parse-command-input eshell-last-output-end (1- (point))))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if (eshell-invoke-directly cmd input) (eval cmd) (eshell-eval-command cmd input)))) (eshell-life-is-too-much)))))
  (condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- (point)))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd (eshell-parse-command-input eshell-last-output-end (1- (point))))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if ... ... ...))) (eshell-life-is-too-much))))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat (error-message-string err) "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input)))
  (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- (point)))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd (eshell-parse-command-input eshell-last-output-end (1- (point))))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore (if ... ... ...))) (eshell-life-is-too-much))))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat (error-message-string err) "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input)))
  (let (input) (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- (point)))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd (eshell-parse-command-input eshell-last-output-end (1- ...)))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start (1- eshell-last-input-end))) (run-hooks (quote eshell-input-filter-functions)) (and (catch (quote eshell-terminal) (ignore ...)) (eshell-life-is-too-much))))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat (error-message-string err) "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input))))
  (if (= eshell-last-output-end (point)) (run-hooks (quote eshell-post-command-hook)) (let (input) (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- (point)))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd (eshell-parse-command-input eshell-last-output-end ...))) (when cmd (eshell-update-markers eshell-last-output-end) (setq input (buffer-substring-no-properties eshell-last-input-start ...)) (run-hooks (quote eshell-input-filter-functions)) (and (catch ... ...) (eshell-life-is-too-much))))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat (error-message-string err) "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input)))))
  (if proc-running-p (progn (eshell-update-markers eshell-last-output-end) (if (or eshell-send-direct-to-subprocesses (= eshell-last-input-start eshell-last-input-end)) (unless no-newline (process-send-string (eshell-interactive-process) "\n")) (process-send-region (eshell-interactive-process) eshell-last-input-start eshell-last-input-end))) (if (= eshell-last-output-end (point)) (run-hooks (quote eshell-post-command-hook)) (let (input) (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end (1- ...))) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- (point))) (let ((cmd ...)) (when cmd (eshell-update-markers eshell-last-output-end) (setq input ...) (run-hooks ...) (and ... ...)))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat (error-message-string err) "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input))))))
  (if (and proc-running-p (not (eq (process-status (eshell-interactive-process)) (quote run)))) nil (if (or proc-running-p (>= (point) eshell-last-output-end)) (goto-char (point-max)) (let ((copy (eshell-get-old-input use-region))) (goto-char eshell-last-output-end) (insert-and-inherit copy))) (unless (or no-newline (and eshell-send-direct-to-subprocesses proc-running-p)) (insert-before-markers-and-inherit 10)) (if proc-running-p (progn (eshell-update-markers eshell-last-output-end) (if (or eshell-send-direct-to-subprocesses (= eshell-last-input-start eshell-last-input-end)) (unless no-newline (process-send-string (eshell-interactive-process) "\n")) (process-send-region (eshell-interactive-process) eshell-last-input-start eshell-last-input-end))) (if (= eshell-last-output-end (point)) (run-hooks (quote eshell-post-command-hook)) (let (input) (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end ...)) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- ...)) (let (...) (when cmd ... ... ... ...))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat ... "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input)))))))
  (unless (and proc-running-p (not (eq (process-status (eshell-interactive-process)) (quote run)))) (if (or proc-running-p (>= (point) eshell-last-output-end)) (goto-char (point-max)) (let ((copy (eshell-get-old-input use-region))) (goto-char eshell-last-output-end) (insert-and-inherit copy))) (unless (or no-newline (and eshell-send-direct-to-subprocesses proc-running-p)) (insert-before-markers-and-inherit 10)) (if proc-running-p (progn (eshell-update-markers eshell-last-output-end) (if (or eshell-send-direct-to-subprocesses (= eshell-last-input-start eshell-last-input-end)) (unless no-newline (process-send-string (eshell-interactive-process) "\n")) (process-send-region (eshell-interactive-process) eshell-last-input-start eshell-last-input-end))) (if (= eshell-last-output-end (point)) (run-hooks (quote eshell-post-command-hook)) (let (input) (eshell-condition-case err (progn (setq input (buffer-substring-no-properties eshell-last-output-end ...)) (run-hook-with-args (quote eshell-expand-input-functions) eshell-last-output-end (1- ...)) (let (...) (when cmd ... ... ... ...))) (quit (eshell-reset t) (run-hooks (quote eshell-post-command-hook)) (signal (quote quit) nil)) (error (eshell-reset t) (eshell-interactive-print (concat ... "\n")) (run-hooks (quote eshell-post-command-hook)) (insert-and-inherit input)))))))
  (let ((proc-running-p (and (eshell-interactive-process) (not queue-p))) (inhibit-point-motion-hooks t) after-change-functions) (unless (and proc-running-p (not (eq (process-status (eshell-interactive-process)) (quote run)))) (if (or proc-running-p (>= (point) eshell-last-output-end)) (goto-char (point-max)) (let ((copy (eshell-get-old-input use-region))) (goto-char eshell-last-output-end) (insert-and-inherit copy))) (unless (or no-newline (and eshell-send-direct-to-subprocesses proc-running-p)) (insert-before-markers-and-inherit 10)) (if proc-running-p (progn (eshell-update-markers eshell-last-output-end) (if (or eshell-send-direct-to-subprocesses (= eshell-last-input-start eshell-last-input-end)) (unless no-newline (process-send-string (eshell-interactive-process) "\n")) (process-send-region (eshell-interactive-process) eshell-last-input-start eshell-last-input-end))) (if (= eshell-last-output-end (point)) (run-hooks (quote eshell-post-command-hook)) (let (input) (eshell-condition-case err (progn (setq input ...) (run-hook-with-args ... eshell-last-output-end ...) (let ... ...)) (quit (eshell-reset t) (run-hooks ...) (signal ... nil)) (error (eshell-reset t) (eshell-interactive-print ...) (run-hooks ...) (insert-and-inherit input))))))))
  eshell-send-input(nil)
  call-interactively(eshell-send-input nil nil)