diff options
author | Jim Porter <jporterbugs@gmail.com> | 2024-10-04 21:45:04 -0700 |
---|---|---|
committer | Jim Porter <jporterbugs@gmail.com> | 2024-10-16 21:48:35 -0700 |
commit | 40ffacb34b194aa82273539ab7a5be2f485a706f (patch) | |
tree | 819b868c6ca824fe32f6c404fc0311c631a8801c /lisp/emacs-lisp | |
parent | af029cdb3a69ba67ae88c9e93b7564778c61a3c6 (diff) | |
download | emacs-40ffacb34b194aa82273539ab7a5be2f485a706f.tar.gz emacs-40ffacb34b194aa82273539ab7a5be2f485a706f.tar.bz2 emacs-40ffacb34b194aa82273539ab7a5be2f485a706f.zip |
Improve correctness of Eshell sub-forms
This makes sure that we treat Eshell sub-forms (whether Lisp or command
forms) as values when appropriate, or as regular invocations. This
requires a bit more explicit work, but helps to resolve some of the
surprising differences between Lisp and command forms in complex Eshell
statements.
* lisp/eshell/esh-cmd.el (eshell-subcommand-arg-values): Make obsolete.
(eshell-parse-lisp-argument): Don't add 'eshell-command-to-value' here.
(eshell-rewrite-sexp-command): Don't check for 'eshell-command-to-value
here'; instead check for 'eshell-lisp-command'.
(eshell-structure-basic-command): Check for 'eshell-lisp-command'.
(eshell-term-as-value): New function...
(eshell-rewrite-named-command, eshell-rewrite-for-command): ... call it.
* lisp/eshell/esh-arg.el (eshell-parse-special-reference):
* lisp/eshell/esh-io.el (eshell-strip-redirections):
* lisp/eshell/esh-var.el (eshell-prepare-indices): Call
'eshell-term-as-value'.
* test/lisp/eshell/esh-arg-tests.el
(esh-arg-test/special-reference/command-form):
* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop-lisp-body)
(esh-cmd-test/while-loop-lisp-body)
(esh-cmd-test/if-else-statement-lisp-body): New tests.
* test/lisp/eshell/esh-var-tests.el
(esh-var-test/interp-var-indices-subcommand): Add another command to
test.
* doc/misc/eshell.texi (Control Flow): Update documentation.
Diffstat (limited to 'lisp/emacs-lisp')
0 files changed, 0 insertions, 0 deletions