diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index ade7907..02d7225 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -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 diff --git a/highlighters/main/test-data/sudo-command.zsh b/highlighters/main/test-data/sudo-command.zsh index 4f8909e..3183a23 100644 --- a/highlighters/main/test-data/sudo-command.zsh +++ b/highlighters/main/test-data/sudo-command.zsh @@ -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 )