'main': The word after 'sudo' is only a non-command word if it is an option.

This commit is contained in:
Daniel Shahaf 2016-08-16 13:31:05 +00:00
parent 179b8e753f
commit 757d047f09
2 changed files with 5 additions and 1 deletions

View File

@ -338,6 +338,9 @@ _zsh_highlight_main_highlighter()
# Parse the sudo command line
if (( ! in_redirection )); then
if [[ $this_word == *':sudo_opt:'* ]] && [[ $arg != -* ]]; then
this_word=${this_word//:sudo_opt:/}
fi
if [[ $this_word == *':sudo_opt:'* ]]; then
case "$arg" in
# Flag that requires an argument

View File

@ -31,7 +31,7 @@
# * -i (no argument)
# * -C3 (pasted argument)
# * -u otheruser (non-pasted argument)
BUFFER='sudo -C3 -u otheruser -i ls /; sudo ; sudo -u ;'
BUFFER='sudo -C3 -u otheruser -i ls /; sudo ; sudo -u ; sudo notacommand'
expected_region_highlight=(
"1 4 precommand" # sudo
@ -43,4 +43,5 @@ expected_region_highlight=(
"29 29 path" # /
"37 37 unknown-token" # ;, error because empty command
"47 47 unknown-token" # ;, error because incomplete command
"54 64 unknown-token" # notacommand - doesn't falls back to "not a command word" codepath
)