emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master e8875bc 2/2: Treat non-erroring lisp call as succes


From: Noam Postavsky
Subject: [Emacs-diffs] master e8875bc 2/2: Treat non-erroring lisp call as successful eshell command (Bug#26161)
Date: Thu, 20 Apr 2017 23:04:17 -0400 (EDT)

branch: master
commit e8875bcbe067ea020dba95530ec4e9485942babd
Author: George D. Plymale II <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Treat non-erroring lisp call as successful eshell command (Bug#26161)
    
    This lets a compound command like 'cd .. && echo ok' print 'ok',
    similar to how most other shells behave.
    
    * lisp/eshell/esh-cmd.el (eshell-exit-success-p): Only check if the
    last exit code was zero, rather than first checking whether the last
    command returned nil.
    (eshell-exec-lisp): Set `eshell-last-command-status' to 1 on error.
    
    Copyright-paperwork-exempt: yes
---
 lisp/eshell/esh-cmd.el | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index 583ba6a..86e7b83 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -575,14 +575,9 @@ must be implemented via rewriting, rather than as a 
function."
 (defvar eshell-last-command-result)     ;Defined in esh-io.el.
 
 (defun eshell-exit-success-p ()
-  "Return non-nil if the last command was \"successful\".
-For a bit of Lisp code, this means a return value of non-nil.
-For an external command, it means an exit code of 0."
-  (if (save-match-data
-       (string-match "#<\\(Lisp object\\|function .*\\)>"
-                     eshell-last-command-name))
-      eshell-last-command-result
-    (= eshell-last-command-status 0)))
+  "Return non-nil if the last command was successful.
+This means an exit code of 0."
+  (= eshell-last-command-status 0))
 
 (defvar eshell--cmd)
 
@@ -1257,6 +1252,7 @@ represent a lisp form; ARGS will be ignored in that case."
         (and result (funcall printer result))
         result)
     (error
+     (setq eshell-last-command-status 1)
      (let ((msg (error-message-string err)))
        (if (and (not form-p)
                 (string-match "^Wrong number of arguments" msg)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]