|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
> 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]|