mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 21:33:09 +00:00
7d5b44e828
This adds initial support for statements with prefixed variable assignments. Statments like this are supported: a=1 b=$a echo $b # outputs 1 Just like in other shells, the left-hand side of each assignment must be a valid variable identifier (no quoting/escaping). Array indexing (PATH[1]=/bin ls $PATH) is *not* yet supported, but can be added fairly easily. The right hand side may be any valid string token, like a command substitution, or a brace expansion. Since `a=* foo` is equivalent to `begin set -lx a *; foo; end`, the assignment, like `set`, uses nullglob behavior, e.g. below command can safely be used to check if a directory is empty. x=/nothing/{,.}* test (count $x) -eq 0 Generic file completion is done after the equal sign, so for example pressing tab after something like `HOME=/` completes files in the root directory Subcommand completion works, so something like `GIT_DIR=repo.git and command git ` correctly calls git completions (but the git completion does not use the variable as of now). The variable assignment is highlighted like an argument. Closes #6048 |
||
---|---|---|
.. | ||
_static | ||
cmds | ||
commands.rst | ||
conf.py | ||
design.rst | ||
faq.rst | ||
fish_indent_lexer.py | ||
index.rst | ||
license.rst | ||
tutorial.rst |