'main': Don't use «foo && bar || baz» where a trenary is more appropriate.

This prevents the baz pattern match from being attempted whenever the
bar pattern match was tried and failed.
This commit is contained in:
Daniel Shahaf 2020-03-16 19:13:12 +00:00
parent 4bbd2a3bc6
commit 63bcd85dfa

View file

@ -698,14 +698,24 @@ _zsh_highlight_main_highlighter_highlight_list()
if (( ! in_redirection )); then
if [[ $this_word == *':sudo_opt:'* ]]; then
if [[ -n $flags_with_argument ]] &&
{ [[ -n $flags_sans_argument ]] && [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument] ]] ||
[[ $arg == '-'[$flags_with_argument] ]] }; then
{
# Trenary
if [[ -n $flags_sans_argument ]]
then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument] ]]
else [[ $arg == '-'[$flags_with_argument] ]]
fi
} then
# Flag that requires an argument
this_word=${this_word//:start:/}
next_word=':sudo_arg:'
elif [[ -n $flags_with_argument ]] &&
{ [[ -n $flags_sans_argument ]] && [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument]* ]] ||
[[ $arg == '-'[$flags_with_argument]* ]] }; then
{
# Trenary
if [[ -n $flags_sans_argument ]]
then [[ $arg == '-'[$flags_sans_argument]#[$flags_with_argument]* ]]
else [[ $arg == '-'[$flags_with_argument]* ]]
fi
} then
# Argument attached in the same word
this_word=${this_word//:start:/}
next_word+=':start:'