From 8abcf187f6f3ac6a0d915daefe6f580784e739b3 Mon Sep 17 00:00:00 2001 From: Shura Date: Mon, 29 Jul 2013 17:33:34 +0400 Subject: [PATCH 1/2] dollar variable and backslash codes highlighting --- highlighters/main/main-highlighter.zsh | 29 ++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index be1d0a9..d7f04d2 100755 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -167,18 +167,35 @@ _zsh_highlight_main_highlighter_check_path() _zsh_highlight_main_highlighter_highlight_string() { setopt localoptions noksharrays - local i j k style + local i j k style varflag # Starting quote is at 1, so start parsing at offset 2 in the string. for (( i = 2 ; i < end_pos - start_pos ; i += 1 )) ; do (( j = i + start_pos - 1 )) (( k = j + 1 )) case "$arg[$i]" in - '$') style=$ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument];; - "\\") style=$ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument] - (( k += 1 )) # Color following char too. - (( i += 1 )) # Skip parsing the escaped char. + '$' ) style=$ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument] + (( varflag = 1)) ;; - *) continue;; + "\\") style=$ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument] + for (( c = i + 1 ; c < end_pos - start_pos ; c += 1 )); do + [[ "$arg[$c]" != ([0-9,xX,a-f,A-F]) ]] && break + done + AA=$arg[$i+1,$c-1] + if [[ "$AA" =~ "^(0*(x|X)[0-9,a-f,A-F]{1,2})" || "$AA" =~ "^(0[0-7]{1,3})" ]];then + (( k += $#MATCH )) + (( i += $#MATCH )) + else + (( k += 1 )) # Color following char too. + (( i += 1 )) # Skip parsing the escaped char. + fi + (( varflag = 0 )) + ;; + ([^a-zA-Z0-9_])) + (( varflag = 0 )) + continue + ;; + *) [[ $varflag -eq 0 ]] && continue ;; + esac region_highlight+=("$j $k $style") done From a7ee0597ef696ef8f79af31f36ff8997b80e2368 Mon Sep 17 00:00:00 2001 From: Shura Date: Fri, 9 Aug 2013 10:24:14 +0400 Subject: [PATCH 2/2] Update main-highlighter.zsh Comments added --- highlighters/main/main-highlighter.zsh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/highlighters/main/main-highlighter.zsh b/highlighters/main/main-highlighter.zsh index d7f04d2..dbe48da 100755 --- a/highlighters/main/main-highlighter.zsh +++ b/highlighters/main/main-highlighter.zsh @@ -181,6 +181,7 @@ _zsh_highlight_main_highlighter_highlight_string() [[ "$arg[$c]" != ([0-9,xX,a-f,A-F]) ]] && break done AA=$arg[$i+1,$c-1] + # Matching for HEX and OCT values like \0xA6, \xA6 or \012 if [[ "$AA" =~ "^(0*(x|X)[0-9,a-f,A-F]{1,2})" || "$AA" =~ "^(0[0-7]{1,3})" ]];then (( k += $#MATCH )) (( i += $#MATCH )) @@ -188,10 +189,10 @@ _zsh_highlight_main_highlighter_highlight_string() (( k += 1 )) # Color following char too. (( i += 1 )) # Skip parsing the escaped char. fi - (( varflag = 0 )) + (( varflag = 0 )) # End of variable ;; ([^a-zA-Z0-9_])) - (( varflag = 0 )) + (( varflag = 0 )) # End of variable continue ;; *) [[ $varflag -eq 0 ]] && continue ;;