1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-02 08:22:22 +00:00

Improve/correct documentation about Eshell variable expansion

* lisp/eshell/esh-var.el: Correct documentation comment.
(eshell-parse-variable-ref): Correct docstring.

* doc/misc/eshell.texi (Dollars Expansion): Add documentation for
$"var"/$'var' and $<command> syntaxes.
This commit is contained in:
Jim Porter 2022-02-27 13:20:51 -08:00 committed by Eli Zaretskii
parent 9e257aecc9
commit 2c3d1b6bf4
2 changed files with 23 additions and 3 deletions

View File

@ -583,6 +583,12 @@ of familiarity.
Expands to the value bound to @code{var}. This is the main way to use
variables in command invocations.
@item $"var"
@item $'var'
Expands to the value bound to @code{var}. This is useful to
disambiguate the variable name when concatenating it with another
value, such as @samp{$"var"-suffix}.
@item $#var
Expands to the length of the value bound to @code{var}. Raises an error
if the value is not a sequence
@ -597,6 +603,11 @@ it can be used in a string, such as @samp{/some/path/$(lisp).txt}.
Returns the output of @command{command}, which can be any valid Eshell
command invocation, and may even contain expansions.
@item $<command>
As with @samp{$@{command@}}, evaluates the Eshell command invocation
@command{command}, but writes the output to a temporary file and
returns the file name.
@item $var[i]
Expands to the @code{i}th element of the value bound to @code{var}. If
the value is a string, it will be split at whitespace to make it a list.

View File

@ -34,7 +34,8 @@
;;
;; "-" is a valid part of a variable name.
;;
;; $<MYVAR>-TOO
;; $\"MYVAR\"-TOO
;; $'MYVAR'-TOO
;;
;; Only "MYVAR" is part of the variable name in this case.
;;
@ -55,6 +56,11 @@
;; Returns the value of an eshell subcommand. See the note above
;; regarding Lisp evaluations.
;;
;; $<command>
;;
;; Evaluates an eshell subcommand, redirecting the output to a
;; temporary file, and returning the file name.
;;
;; $ANYVAR[10]
;;
;; Return the 10th element of ANYVAR. If ANYVAR's value is a string,
@ -426,9 +432,12 @@ variable.
Possible options are:
NAME an environment or Lisp variable value
<LONG-NAME> disambiguates the length of the name
\"LONG-NAME\" disambiguates the length of the name
'LONG-NAME' as above
{COMMAND} result of command is variable's value
(LISP-FORM) result of Lisp form is variable's value"
(LISP-FORM) result of Lisp form is variable's value
<COMMAND> write the output of command to a temporary file;
result is the file name"
(cond
((eq (char-after) ?{)
(let ((end (eshell-find-delimiter ?\{ ?\})))