From e7ab165310033beb36c78d237b8af698484a2895 Mon Sep 17 00:00:00 2001 From: garinger Date: Wed, 13 Jul 2011 12:47:27 -0700 Subject: [PATCH] * optimize discrimination of bracket-type * use a nicer variable name --- .../brackets/brackets-highlighter.zsh | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/highlighters/brackets/brackets-highlighter.zsh b/highlighters/brackets/brackets-highlighter.zsh index 91d114c..e1ffdae 100644 --- a/highlighters/brackets/brackets-highlighter.zsh +++ b/highlighters/brackets/brackets-highlighter.zsh @@ -54,28 +54,23 @@ _zsh_highlight_brackets_highlighter() ["([{"]) levelpos[$pos]=$((++level)) lastoflevel[$level]=$pos - typepos[$pos]=$BUFFER[$pos] + typepos[$pos]=`_zsh_highlight_brackets_highlighter_brackettype $BUFFER[$pos]` ;; [")]}"]) matching[$lastoflevel[$level]]=$pos matching[$pos]=$lastoflevel[$level] levelpos[$pos]=$((level--)) - typepos[$pos]=$BUFFER[$pos] + typepos[$pos]=`_zsh_highlight_brackets_highlighter_brackettype $BUFFER[$pos]` ;; ['"'\']) - local temp=$BUFFER[$pos] + local quotetype=$BUFFER[$pos] while (( $pos < ${#BUFFER} )) ; do ((++pos)) - [[ $BUFFER[$pos] == $temp ]] && break + [[ $BUFFER[$pos] == $quotetype ]] && break done ;; esac done - for pos in ${(k)typepos}; do - typepos[$pos]=${typepos[${pos}]/["()"]/round} - typepos[$pos]=${typepos[${pos}]/["[]"]/square} - typepos[$pos]=${typepos[${pos}]/["{}"]/curly} - done for pos in ${(k)levelpos}; do if [[ -z $matching[$pos] ]] || [[ $typepos[$pos] != $typepos[$matching[$pos]] ]]; then region_highlight+=("$((pos - 1)) $pos "$ZSH_HIGHLIGHT_STYLES[bracket-error]) @@ -91,3 +86,13 @@ _zsh_highlight_brackets_highlighter() region_highlight+=("$((otherpos - 1)) $otherpos standout") fi } + +_zsh_highlight_brackets_highlighter_brackettype() +{ + case $1 in + ["()"]) print round;; + ["[]"]) print bracket;; + ["{}"]) print curly;; + *) ;; + esac +}