From 3ce01076b521d9ab37dce90f2e73bdf1d44ec3d7 Mon Sep 17 00:00:00 2001 From: m0viefreak Date: Mon, 28 Mar 2016 23:45:02 +0200 Subject: [PATCH 1/2] driver: load zsh/parameter if available --- zsh-syntax-highlighting.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zsh-syntax-highlighting.zsh b/zsh-syntax-highlighting.zsh index f07851d..676b278 100644 --- a/zsh-syntax-highlighting.zsh +++ b/zsh-syntax-highlighting.zsh @@ -328,5 +328,8 @@ add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || { echo 'zsh-syntax-highlighting: failed loading add-zsh-hook.' >&2 } +# Load zsh/parameter module if available +zmodload zsh/parameter 2>/dev/null || true + # Initialize the array of active highlighters if needed. [[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) || true From 2f18ba64e397f11b04e685eeaee802b7285510cc Mon Sep 17 00:00:00 2001 From: m0viefreak Date: Mon, 28 Mar 2016 23:38:51 +0200 Subject: [PATCH 2/2] 'main': use zsh/parameter to resolve alias If possible, use zsh/parameter to avoid forks. Fixes #263. --- highlighters/main/main-highlighter.zsh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index eaba198..6cd0cdb 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -93,6 +93,19 @@ _zsh_highlight_main__type() { LC_ALL=C builtin type -w -- $1 2>/dev/null } +# Resolve alias. +# +# Takes a single argument. +# +# The result will be stored in REPLY. +_zsh_highlight_main__resolve_alias() { + if zmodload -e zsh/parameter; then + REPLY=${aliases[$arg]} + else + REPLY="${"$(alias -- $arg)"#*=}" + fi +} + # Main syntax highlighting function. _zsh_highlight_main_highlighter() { @@ -344,8 +357,9 @@ _zsh_highlight_main_highlighter() style=unknown-token else style=alias - local aliased_command="${"$(alias -- $arg)"#*=}" - [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS:#"$aliased_command"} && -z ${(M)ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS:#"$arg"} ]] && ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS+=($arg) + _zsh_highlight_main__resolve_alias $arg + local alias_target="$REPLY" + [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS:#"$alias_target"} && -z ${(M)ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS:#"$arg"} ]] && ZSH_HIGHLIGHT_TOKENS_PRECOMMANDS+=($arg) fi } ;;