emacs-diffs
[Top][All Lists]
Advanced

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

master b6c91cdf541 1/2: Return non-zero exit status when Eshell's "which


From: Jim Porter
Subject: master b6c91cdf541 1/2: Return non-zero exit status when Eshell's "which" fails to find a command
Date: Sun, 8 Dec 2024 23:24:48 -0500 (EST)

branch: master
commit b6c91cdf54168eef260e28a7866486a4d68bfc9e
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>

    Return non-zero exit status when Eshell's "which" fails to find a command
    
    * lisp/eshell/esh-cmd.el (eshell/which): Set exit status to 1 if we
    couldn't find any of the commands (bug#74739).
---
 lisp/eshell/esh-cmd.el | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index c0015745ad5..7a146944145 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -1381,19 +1381,22 @@ have been replaced by constants."
 
 (defun eshell/which (command &rest names)
   "Identify the COMMAND, and where it is located."
-  (dolist (name (cons command names))
-    (condition-case error
-        (eshell-printn
-         (catch 'found
-           (run-hook-wrapped
-            'eshell-named-command-hook
-            (lambda (hook)
-              (when-let* (((symbolp hook))
-                          (which-func (get hook 'eshell-which-function))
-                          (result (funcall which-func command)))
-                (throw 'found result))))
-           (eshell-plain-command--which name)))
-      (error (eshell-error (format "which: %s\n" (cadr error)))))))
+  (let (not-found)
+    (dolist (name (cons command names))
+      (condition-case error
+          (eshell-printn
+           (catch 'found
+             (run-hook-wrapped
+              'eshell-named-command-hook
+              (lambda (hook)
+                (when-let* (((symbolp hook))
+                            (which-func (get hook 'eshell-which-function))
+                            (result (funcall which-func command)))
+                  (throw 'found result))))
+             (eshell-plain-command--which name)))
+        (error (eshell-error (format "which: %s\n" (cadr error)))
+               (setq not-found t))))
+    (when not-found (eshell-set-exit-info 1))))
 
 (put 'eshell/which 'eshell-no-numeric-conversions t)
 



reply via email to

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