mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
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
This commit is contained in:
parent
a6b375ba4b
commit
e8875bcbe0
1 changed files with 4 additions and 8 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue