From ea777cd2a80ea2dd4f03d3f03a546bea01fd6d16 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Sun, 20 Oct 2013 15:29:01 +0200 Subject: [PATCH] Use GLOB_SUBST with $arg ("=ls") and check suffix aliases $~arg resolves "=foo" and suffix aliases might be used in general or via zsh-mime-setup. Fixes #126 --- highlighters/main/main-highlighter.zsh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index f70a286..8029ae7 100755 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -93,11 +93,21 @@ _zsh_highlight_main_highlighter() if [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS:#"$arg"} ]]; then style=$ZSH_HIGHLIGHT_STYLES[precommand] else - res=$(LC_ALL=C builtin type -w $arg 2>/dev/null) + # ~: use GLOB_SUBST to resolve "=foo.sh" (https://github.com/zsh-users/zsh-syntax-highlighting/issues/126) + if [[ $arg[1] == '=' ]]; then + local arg_resolved=$~arg + else + local arg_resolved=$arg + fi + res=$(LC_ALL=C builtin type -w $arg_resolved 2>/dev/null) case $res in *': reserved') style=$ZSH_HIGHLIGHT_STYLES[reserved-word];; *': alias') style=$ZSH_HIGHLIGHT_STYLES[alias] - local aliased_command="${"$(alias $arg)"#*=}" + local aliased_command="${"$(alias $arg_resolved)"#*=}" + if [[ -z $aliased_command ]]; then + # no alias found, check suffix aliases + local aliased_command="${"$(alias -s ${arg_resolved:e})"#*=}" + fi [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS:#"$aliased_command"} && -z ${(M)ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS:#"$arg"} ]] && ZSH_HIGHLIGHT_TOKENS_FOLLOWED_BY_COMMANDS+=($arg) ;; *': builtin') style=$ZSH_HIGHLIGHT_STYLES[builtin];;