This commit is contained in:
Ben Boeckel 2026-06-13 01:23:37 -04:00 committed by GitHub
commit 9293c7a6a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 0 deletions

View File

@ -3,7 +3,12 @@
- Highlight `&>` `>&|` `>&!` `&>|` and `&>!` as redirection.
[#942]
- Highlight redirection targets as paths if possible [#982].
## Highlight paths with matching patterns
When matchers start with `*.`, the are treated as globs to further refine thee
highlighting of paths [#982].
# Changes in 0.8.0

View File

@ -67,6 +67,11 @@ This highlighter defines the following styles:
* `arg0` - a command word other than one of those enumerated above (other than a command, precommand, alias, function, or shell builtin command).
* `default` - everything else
Additionally, styles starting with `*.` may be used to style `path` and
`redirection` argument matches with a more specific style. For example,
defining the `*.png` style will apply to any `path` or `redirection` target
ending with `.png`.
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
for example in `~/.zshrc`:

View File

@ -1258,6 +1258,16 @@ _zsh_highlight_main_highlighter_check_path()
fi
else
if [[ -L $expanded_path || -e $expanded_path ]]; then
for key in ${(k)ZSH_HIGHLIGHT_STYLES}; do
case $key in
"*."*) ;;
*) continue ;;
esac
case $arg in
*.$key[3,-1]) REPLY=$key ;;
esac
done
return 0
fi
fi
@ -1441,6 +1451,9 @@ _zsh_highlight_main_highlighter_highlight_argument()
if (( in_redirection )) && [[ $last_arg == *['<>']['&'] && $arg[$1,-1] == (<0->|p|-) ]]; then
if [[ $arg[$1,-1] == (p|-) ]]; then
base_style=redirection
if _zsh_highlight_main_highlighter_check_path $arg[$1,-1] 0; then
base_style=$REPLY
fi
else
base_style=numeric-fd
fi