--- ruby.vim Wed Mar 30 15:10:26 2005 UTC +++ ruby.vim Wed Mar 30 21:28:00 2005 UTC @@ -44,12 +44,14 @@ syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" contained display syn match rubyNoInterpolation "\\#{[^}]*}" contained syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" contained display -syn region rubyNestedBrackets start="(" end=")" skip="\\\\\|\\)" contained contains=@rubyStringSpecial -syn region rubyNestedBrackets start="{" end="}" skip="\\\\\|\\}" contained contains=@rubyStringSpecial -syn region rubyNestedBrackets start="<" end=">" skip="\\\\\|\\>" contained contains=@rubyStringSpecial -syn region rubyNestedBrackets start="\[" end="\]" skip="\\\\\|\\\]" contained contains=@rubyStringSpecial +syn match rubyDelimEscape "\\[(<{\[]" contained display +syn region rubyNestedParens start="(" end=")" skip="\\\\\|\\)" contained contains=@rubyStringSpecial,rubyNestedParens,rubyDelimEscape +syn region rubyNestedCurlies start="{" end="}" skip="\\\\\|\\}" contained contains=@rubyStringSpecial,rubyNestedCurlies,rubyDelimEscape +syn region rubyNestedAngles start="<" end=">" skip="\\\\\|\\>" contained contains=@rubyStringSpecial,rubyNestedAngles,rubyDelimEscape +syn region rubyNestedBrackets start="\[" end="\]" skip="\\\\\|\\\]" contained contains=@rubyStringSpecial,rubyNestedBrackets,rubyDelimEscape -syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyEscape,rubyNestedBrackets +syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyEscape +syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParens,rubyNestedCurlies,rubyNestedAngles,rubyNestedBrackets " Numbers and ASCII Codes syn match rubyASCIICode "\w\@[iomx]*" skip="\\\\\|\\>" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%r(" end=")[iomx]*" skip="\\\\\|\\)" contains=@rubyStringSpecial fold +syn region rubyString matchgroup=rubyStringDelimiter start="%r{" end="}[iomx]*" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlies,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%r<" end=">[iomx]*" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngles,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedBrackets,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%r(" end=")[iomx]*" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParens,rubyDelimEscape fold " Generalized Single Quoted String, Symbol and Array of Strings syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]{" end="}" skip="\\\\\|\\}" fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]<" end=">" skip="\\\\\|\\>" fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\[" end="\]" skip="\\\\\|\\\]" fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw](" end=")" skip="\\\\\|\\)" fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlies,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngles,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedBrackets,rubyDelimEscape +syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParens,rubyDelimEscape " Generalized Double Quoted String and Array of Strings and Shell Command Output " Note: %= is not matched here as the beginning of a double quoted string syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial fold -syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlies,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngles,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedBrackets,rubyDelimEscape fold +syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParens,rubyDelimEscape fold " Here Document syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo nextgroup=rubyFunction fold - syn region rubyBlock start="\" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo nextgroup=rubyClass fold - syn region rubyBlock start="\" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo nextgroup=rubyModule fold + syn region rubyBlock start="\" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyFunction fold + syn region rubyBlock start="\" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyClass fold + syn region rubyBlock start="\" matchgroup=rubyDefine end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyModule fold " modifiers syn match rubyControl "\<\%(if\|unless\|while\|until\)\>" display " *do* requiring *end* - syn region rubyDoBlock matchgroup=rubyControl start="\%(\<\%(for\|until\|while\)\s.*\s\)\@" end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo fold + syn region rubyDoBlock matchgroup=rubyControl start="\%(\<\%(for\|until\|while\)\s.*\s\)\@" end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold " *{* requiring *}* - syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyStringSpecial,rubyTodo fold + syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold " statements without *do* - syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="^\s*\%(if\|unless\)\>" start="[;=(]\s*\%(if\|unless\)\>"hs=s+1 end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo fold + syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="^\s*\%(if\|unless\)\>" start="[;=(]\s*\%(if\|unless\)\>"hs=s+1 end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold " statement with optional *do* - syn region rubyOptDoBlock matchgroup=rubyControl start="\" start="^\s*\%(while\|until\)\>" start=";\s*\%(while\|until\)\>"hs=s+1 end="\" contains=ALLBUT,@rubyStringSpecial,rubyTodo fold + syn region rubyOptDoBlock matchgroup=rubyControl start="\" start="^\s*\%(while\|until\)\>" start=";\s*\%(while\|until\)\>"hs=s+1 end="\" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold " optional *do* syn match rubyControl "\%(\<\%(for\|until\|while\)\s.*\s\)\@<=\%(do\|:\)\>" @@ -263,6 +265,10 @@ HiLink rubyEscape Special HiLink rubyInterpolation Special HiLink rubyNoInterpolation rubyString + HiLink rubyDelimEscape rubyString + HiLink rubyNestedParens rubyString + HiLink rubyNestedCurlies rubyString + HiLink rubyNestedAngles rubyString HiLink rubyNestedBrackets rubyString HiLink rubySharpBang PreProc HiLink rubyStringDelimiter Delimiter