'main': Fix the last commit's issue concerning parameter expansion at command word.
This commit is contained in:
parent
76d61360a7
commit
bf055f7df2
|
@ -499,6 +499,26 @@ _zsh_highlight_main_highlighter_highlight_list()
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Expand parameters.
|
||||||
|
#
|
||||||
|
# ### For now, expand just '$foo', like that, without braces or anything.
|
||||||
|
() {
|
||||||
|
# That's not entirely correct --- if the parameter's value happens to be a reserved
|
||||||
|
# word, the parameter expansion will be highlighted as a reserved word --- but that
|
||||||
|
# incorrectness is outweighed by the usability improvement of permitting the use of
|
||||||
|
# parameters that refer to commands, functions, and builtins.
|
||||||
|
local -a match mbegin mend
|
||||||
|
local MATCH; integer MBEGIN MEND
|
||||||
|
if [[ $res == none ]] && (( ${+parameters} )) &&
|
||||||
|
[[ ${arg[1]} == \$ ]] && [[ ${arg:1} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] &&
|
||||||
|
(( ${+parameters[(e)${MATCH}]} )) && [[ ${parameters[(e)$MATCH]} != *special* ]]
|
||||||
|
then
|
||||||
|
arg=${(P)MATCH}
|
||||||
|
_zsh_highlight_main__type "$arg"
|
||||||
|
res=$REPLY
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Special-case the first word after 'sudo'.
|
# Special-case the first word after 'sudo'.
|
||||||
if (( ! in_redirection )); then
|
if (( ! in_redirection )); then
|
||||||
if [[ $this_word == *':sudo_opt:'* ]] && [[ $arg != -* ]]; then
|
if [[ $this_word == *':sudo_opt:'* ]] && [[ $arg != -* ]]; then
|
||||||
|
@ -539,23 +559,6 @@ _zsh_highlight_main_highlighter_highlight_list()
|
||||||
next_word+=':sudo_opt:'
|
next_word+=':sudo_opt:'
|
||||||
next_word+=':start:'
|
next_word+=':start:'
|
||||||
else
|
else
|
||||||
() {
|
|
||||||
# Special-case: command word is '$foo', like that, without braces or anything.
|
|
||||||
#
|
|
||||||
# That's not entirely correct --- if the parameter's value happens to be a reserved
|
|
||||||
# word, the parameter expansion will be highlighted as a reserved word --- but that
|
|
||||||
# incorrectness is outweighed by the usability improvement of permitting the use of
|
|
||||||
# parameters that refer to commands, functions, and builtins.
|
|
||||||
local -a match mbegin mend
|
|
||||||
local MATCH; integer MBEGIN MEND
|
|
||||||
if [[ $res == none ]] && (( ${+parameters} )) &&
|
|
||||||
[[ ${arg[1]} == \$ ]] && [[ ${arg:1} =~ ^([A-Za-z_][A-Za-z0-9_]*|[0-9]+)$ ]] &&
|
|
||||||
(( ${+parameters[(e)${MATCH}]} )) && [[ ${parameters[(e)$MATCH]} != *special* ]]
|
|
||||||
then
|
|
||||||
_zsh_highlight_main__type ${(P)MATCH}
|
|
||||||
res=$REPLY
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
case $res in
|
case $res in
|
||||||
reserved) # reserved word
|
reserved) # reserved word
|
||||||
style=reserved-word
|
style=reserved-word
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
|
|
||||||
local x=/usr/bin/env
|
local x=/usr/bin/env
|
||||||
local y=sudo
|
local y=sudo
|
||||||
|
sudo(){}
|
||||||
|
|
||||||
BUFFER='$x "argument"; $y'
|
BUFFER='$x "argument"; $y'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
|
@ -36,5 +38,5 @@ expected_region_highlight=(
|
||||||
"4 13 default" # "argument"
|
"4 13 default" # "argument"
|
||||||
"4 13 double-quoted-argument" # "argument"
|
"4 13 double-quoted-argument" # "argument"
|
||||||
"14 14 commandseparator" # ;
|
"14 14 commandseparator" # ;
|
||||||
"16 17 precommand 'parameter expansion precedes precommand recognition'" # $y (sudo)
|
"16 17 precommand" # $y (sudo)
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,10 +29,12 @@
|
||||||
|
|
||||||
# «/usr» at this point would be highlighted as path_prefix; so should
|
# «/usr» at this point would be highlighted as path_prefix; so should
|
||||||
# a parameter that expands to an equivalent string be highlighted.
|
# a parameter that expands to an equivalent string be highlighted.
|
||||||
|
#
|
||||||
|
# More complicated parameter substitutions aren't eval'd; issue #328.
|
||||||
BUFFER='$PWD; ${PWD}'
|
BUFFER='$PWD; ${PWD}'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"1 4 unknown-token" # $PWD - not eval'd; issue #328
|
"1 4 path" # $PWD
|
||||||
"5 5 commandseparator" # ;
|
"5 5 commandseparator" # ;
|
||||||
"7 12 unknown-token" # ${PWD}
|
"7 12 unknown-token" # ${PWD}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue