From 757d047f09cda75a74ce62e198504893335f9ad5 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Tue, 16 Aug 2016 13:31:05 +0000 Subject: [PATCH] 'main': The word after 'sudo' is only a non-command word if it is an option. --- highlighters/main/main-highlighter.zsh | 3 +++ highlighters/main/test-data/sudo-command.zsh | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) 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 )