|
From: | George D. Plymale |
Subject: | bug#26161: 25.1; `eshell-exit-success-p' determines that Lisp commands are successful if they return non-nil |
Date: | Sat, 1 Apr 2017 19:46:00 -0400 |
> So maybe `eshell/cd' should be changed to return t when it succeeds? That would only solve the problem for this particular command. It's worth noting that even doing things like, e.g., `$ .. && pwd' or `$ cat ~/.emacs && pwd' don't execute their latter halves because the functions that the former parts expand to return nil, even if they are in fact successful. Honestly, it'd probably be better off if `eshell-exit-success-p' just checked`eshell-last-command-status' and Eshell makes sure that erring commands always set that to non-zero (which I think is already covered by `eshell-trap-errors'). > AFAICT, when you cd to a non-existent directory it doesn't throw an > error, but I don't think that should be considered success. Yeah, `eshell/cd' actually is able to bypass something like `eshell-trap-errors' because it uses `cd' under the hood through this function invocation: `(eshell-printn result)' where `result' is `(cd newdir)'. See, `eshell-printn' just captures the result of its given object and prints that out. In some cases, that object is an error (like when you cd into a non-existent directory), but you can't really tell that because `eshell-printn' doesn't care about errors; it just prints out the object it's given. Functions that do this sort of thing may also exist aside from `eshell/cd', so I'm unsure what can be done about that. |
[Prev in Thread] | Current Thread | [Next in Thread] |