zsh-users / zsh-syntax-highlighting

Fish shell like syntax highlighting for Zsh.
github.com/zsh-users/zsh-syntax-highlighting
BSD 3-Clause "New" or "Revised" License
20.16k stars 1.33k forks source link

Precommand assignments after `env` should be allowed to be quoted #743

Open danielshahaf opened 4 years ago

danielshahaf commented 4 years ago

See https://github.com/zsh-users/zsh-syntax-highlighting/issues/627#issuecomment-639383008 and the following comments.

danielshahaf commented 4 years ago

For greppability purposes, quoting @phy1729 analysis from there:

sudo env "PATH=$PATH" First word is sudo which is a known precommand, so next word will be parsed as a command. Next word is env which is a known precommand, so next word will be parsed as a command. Next word is "PATH=$PATH". There's a bug in z-sy-h that when parsing a command ($this_word == *:start:*) an assignment is recognized even if it's no long the true start of a command (i.e. after a precommand), so command foo=bar echo baz parses foo=bar as an assignment and echo as the command even though command will error as foo=bar isn't a command. However in the case of env this mostly is desired. env being a command allows for quoted arguments just like any other, but assignments at the beginning of a command must not be quoted.