From 28932316cca6004253ec57f5d87981c72be64e86 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Mon, 11 Jan 2016 15:07:18 +0000 Subject: [PATCH] aliases: Highlight aliases with '=' in their LHS as error. (Part of issue #263.) --- highlighters/main/main-highlighter.zsh | 25 ++++++++++++++++--- .../main/test-data/alias-assignment1.zsh | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index bc6e2bb..ca080c7 100644 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -294,9 +294,28 @@ _zsh_highlight_main_highlighter() *': suffix alias') style=$ZSH_HIGHLIGHT_STYLES[suffix-alias] ;; - *': alias') style=$ZSH_HIGHLIGHT_STYLES[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) + *': alias') () { + integer insane_alias + case $arg in + # Issue #263: aliases with '=' on their LHS. + # + # There are three cases: + # + # - Unsupported, breaks 'alias -L' output, but invokable: + ('='*) :;; + # - Unsupported, not invokable: + (*'='*) insane_alias=1;; + # - The common case: + (*) :;; + esac + if (( insane_alias )); then + style=$ZSH_HIGHLIGHT_STYLES[unknown-token] + else + style=$ZSH_HIGHLIGHT_STYLES[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) + fi + } ;; *': builtin') style=$ZSH_HIGHLIGHT_STYLES[builtin];; *': function') style=$ZSH_HIGHLIGHT_STYLES[function];; diff --git a/highlighters/main/test-data/alias-assignment1.zsh b/highlighters/main/test-data/alias-assignment1.zsh index 19fb485..9ecbead 100644 --- a/highlighters/main/test-data/alias-assignment1.zsh +++ b/highlighters/main/test-data/alias-assignment1.zsh @@ -34,5 +34,5 @@ ZSH_HIGHLIGHT_STYLES[alias]=$unused_highlight BUFFER='x=y ls' expected_region_highlight=( - "1 3 $ZSH_HIGHLIGHT_STYLES[unknown-token] 'issue #263, #issuecomment-170579803'" # x=y + "1 3 $ZSH_HIGHLIGHT_STYLES[unknown-token]" # x=y )