/runtime/syntax/haml.vim
https://bitbucket.org/ultra_iter/vim-qt · Vim Script · 109 lines · 94 code · 10 blank · 5 comment · 2 complexity · e21d974a3cd29b39b955c2c34c5b81f4 MD5 · raw file
- " Vim syntax file
- " Language: Haml
- " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
- " Filenames: *.haml
- " Last Change: 2010 Aug 09
- if exists("b:current_syntax")
- finish
- endif
- if !exists("main_syntax")
- let main_syntax = 'haml'
- endif
- let b:ruby_no_expensive = 1
- runtime! syntax/html.vim
- unlet! b:current_syntax
- silent! syn include @hamlSassTop syntax/sass.vim
- unlet! b:current_syntax
- syn include @hamlRubyTop syntax/ruby.vim
- syn case match
- syn region rubyCurlyBlock start="{" end="}" contains=@hamlRubyTop contained
- syn cluster hamlRubyTop add=rubyCurlyBlock
- syn cluster hamlComponent contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
- syn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter
- syn cluster hamlTop contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment
- syn match hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable
- syn match hamlTag "%\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent
- syn region hamlAttributes matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent
- syn region hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
- syn region hamlObject matchgroup=hamlObjectDelimiter start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
- syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
- syn match hamlSelfCloser "/" contained
- syn match hamlClassChar "\." contained nextgroup=hamlClass
- syn match hamlIdChar "#{\@!" contained nextgroup=hamlId
- syn match hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
- syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
- syn region hamlDocType start="^\s*!!!" end="$"
- syn region hamlRuby matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
- syn region hamlRuby matchgroup=hamlRubyChar start="-" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
- syn match hamlPlainChar "\\" contained
- syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop
- syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape
- syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD
- syn match hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
- syn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop
- syn region hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape
- syn region hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape
- syn match hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained
- syn match hamlHelper "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
- syn keyword hamlHelper capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
- syn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline
- syn region hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlInterpolation
- syn region hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=hamlInterpolation
- syn region hamlErbFilter matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation
- syn region hamlRubyFilter matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop
- syn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,hamlInterpolation keepend
- syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend
- syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
- syn region hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend
- syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend
- syn match hamlError "\$" contained
- syn region hamlComment start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo
- syn region hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo
- syn match hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment
- hi def link hamlSelfCloser Special
- hi def link hamlDespacer Special
- hi def link hamlClassChar Special
- hi def link hamlIdChar Special
- hi def link hamlTag Special
- hi def link hamlClass Type
- hi def link hamlId Identifier
- hi def link hamlPlainChar Special
- hi def link hamlInterpolatableChar hamlRubyChar
- hi def link hamlRubyOutputChar hamlRubyChar
- hi def link hamlRubyChar Special
- hi def link hamlInterpolationDelimiter Delimiter
- hi def link hamlInterpolationEscape Special
- hi def link hamlAttributeString String
- hi def link hamlAttributeVariable Identifier
- hi def link hamlDocType PreProc
- hi def link hamlFilter PreProc
- hi def link hamlAttributesDelimiter Delimiter
- hi def link hamlObjectDelimiter Delimiter
- hi def link hamlHelper Function
- hi def link hamlHtmlComment hamlComment
- hi def link hamlComment Comment
- hi def link hamlIEConditional SpecialComment
- hi def link hamlError Error
- let b:current_syntax = "haml"
- if main_syntax == "haml"
- unlet main_syntax
- endif
- " vim:set sw=2: