mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-01-21 00:51:43 +08: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
38 lines
785 B
PHP
38 lines
785 B
PHP
// Define ELEM before including this file.
|
|
ELEM(job_list)
|
|
ELEM(job)
|
|
ELEM(job_decorator)
|
|
ELEM(job_conjunction)
|
|
ELEM(job_conjunction_continuation)
|
|
ELEM(job_continuation)
|
|
ELEM(statement)
|
|
ELEM(if_statement)
|
|
ELEM(if_clause)
|
|
ELEM(else_clause)
|
|
ELEM(else_continuation)
|
|
ELEM(switch_statement)
|
|
ELEM(case_item_list)
|
|
ELEM(case_item)
|
|
ELEM(block_statement)
|
|
ELEM(block_header)
|
|
ELEM(for_header)
|
|
ELEM(while_header)
|
|
ELEM(begin_header)
|
|
ELEM(function_header)
|
|
ELEM(not_statement)
|
|
ELEM(andor_job_list)
|
|
ELEM(decorated_statement)
|
|
ELEM(variable_assignment)
|
|
ELEM(variable_assignments)
|
|
ELEM(plain_statement)
|
|
ELEM(argument_list)
|
|
ELEM(arguments_or_redirections_list)
|
|
ELEM(argument)
|
|
ELEM(redirection)
|
|
ELEM(optional_background)
|
|
ELEM(optional_newlines)
|
|
ELEM(end_command)
|
|
ELEM(freestanding_argument_list)
|
|
#undef ELEM
|
|
|