From cf873c1a090b95746cf2f2a9a24a5e4bd7cc2cd6 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sun, 14 Aug 2022 13:48:22 -0700 Subject: Fix non-interactive use of conditionals in Eshell * lisp/eshell/esh-cmd.el (eshell-rewrite-if-command): Fix misplaced 't' symbol; it should be passed to 'eshell-invokify-arg'. (eshell-do-eval): Pass 'synchronous-p' to recursive calls in some missing cases. * test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/if-statement, (esh-cmd-test/if-else-statement) (esh-cmd-test/if-else-statement-lisp-form) (esh-cmd-test/if-else-statement-lisp-form-2) (esh-cmd-test/if-else-statement-ext-cmd) (esh-cmd-test/unless-statement) (esh-cmd-test/unless-else-statement) (esh-cmd-test/unless-else-statement-lisp-form) (esh-cmd-test/unless-else-statement-ext-cmd): Use 'eshell-command-result-equal'. --- lisp/eshell/esh-cmd.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lisp/eshell') diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el index 62c95056fd2..2f77f3f4974 100644 --- a/lisp/eshell/esh-cmd.el +++ b/lisp/eshell/esh-cmd.el @@ -607,7 +607,7 @@ must be implemented via rewriting, rather than as a function." t)) (if (= (length terms) 4) `(eshell-protect - ,(eshell-invokify-arg (car (last terms)))) t)))) + ,(eshell-invokify-arg (car (last terms)) t)))))) (defvar eshell-last-command-result) ;Defined in esh-io.el. @@ -1122,7 +1122,7 @@ be finished later after the completion of an asynchronous subprocess." (setcar eshell-test-body nil)) (unless (car eshell-test-body) (setcar eshell-test-body (copy-tree (car args)))) - (while (cadr (eshell-do-eval (car eshell-test-body))) + (while (cadr (eshell-do-eval (car eshell-test-body) synchronous-p)) (setcar eshell-command-body (if (cddr args) `(progn ,@(copy-tree (cdr args))) @@ -1142,7 +1142,8 @@ be finished later after the completion of an asynchronous subprocess." (setcar eshell-test-body (copy-tree (car args)))) (setcar eshell-command-body (copy-tree - (if (cadr (eshell-do-eval (car eshell-test-body))) + (if (cadr (eshell-do-eval (car eshell-test-body) + synchronous-p)) (cadr args) (car (cddr args))))) (eshell-do-eval (car eshell-command-body) synchronous-p)) -- cgit v1.2.3