haml.vim (7071B)
1 " Vim syntax file 2 " Language: Haml 3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> 4 " Filenames: *.haml 5 " Last Change: 2019 Dec 05 6 7 if exists("b:current_syntax") 8 finish 9 endif 10 11 if !exists("main_syntax") 12 let main_syntax = 'haml' 13 endif 14 let b:ruby_no_expensive = 1 15 16 runtime! syntax/html.vim 17 unlet! b:current_syntax 18 silent! syn include @hamlSassTop syntax/sass.vim 19 unlet! b:current_syntax 20 syn include @hamlRubyTop syntax/ruby.vim 21 22 syn case match 23 24 syn region rubyCurlyBlock start="{" end="}" contains=@hamlRubyTop contained 25 syn cluster hamlRubyTop add=rubyCurlyBlock 26 27 syn cluster hamlComponent contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable 28 syn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter 29 syn cluster hamlTop contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment 30 31 syn match hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable 32 33 syn match hamlTag "%\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent 34 syn region hamlAttributes matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent 35 syn region hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent 36 syn region hamlObject matchgroup=hamlObjectDelimiter start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent 37 syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable 38 syn match hamlSelfCloser "/" contained 39 syn match hamlClassChar "\." contained nextgroup=hamlClass 40 syn match hamlIdChar "#{\@!" contained nextgroup=hamlId 41 syn match hamlClass "\%(\w\|-\|\:\)\+" contained nextgroup=@hamlComponent 42 syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent 43 syn region hamlDocType start="^\s*!!!" end="$" 44 45 syn region hamlRuby matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend 46 syn region hamlRuby matchgroup=hamlRubyChar start="-" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend 47 syn match hamlPlainChar "\\" contained 48 syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop 49 syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape 50 syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD 51 syn match hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)" 52 syn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop 53 54 syn region hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape 55 syn region hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape 56 syn match hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained 57 58 syn match hamlHelper "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop 59 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 60 61 syn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline 62 syn region hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlInterpolation 63 syn region hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=hamlInterpolation 64 syn region hamlErbFilter matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation 65 syn region hamlRubyFilter matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop 66 syn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,hamlInterpolation keepend 67 syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend 68 syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop 69 70 syn region hamlJavascriptBlock start="^\z(\s*\)%script\%((type=[\"']text/javascript[\"'])\)\=\s*$" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend 71 syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend 72 syn match hamlError "\$" contained 73 74 syn region hamlComment start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo 75 syn region hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo 76 syn match hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment 77 78 hi def link hamlSelfCloser Special 79 hi def link hamlDespacer Special 80 hi def link hamlClassChar Special 81 hi def link hamlIdChar Special 82 hi def link hamlTag Special 83 hi def link hamlClass Type 84 hi def link hamlId Identifier 85 hi def link hamlPlainChar Special 86 hi def link hamlInterpolatableChar hamlRubyChar 87 hi def link hamlRubyOutputChar hamlRubyChar 88 hi def link hamlRubyChar Special 89 hi def link hamlInterpolationDelimiter Delimiter 90 hi def link hamlInterpolationEscape Special 91 hi def link hamlAttributeString String 92 hi def link hamlAttributeVariable Identifier 93 hi def link hamlDocType PreProc 94 hi def link hamlFilter PreProc 95 hi def link hamlAttributesDelimiter Delimiter 96 hi def link hamlObjectDelimiter Delimiter 97 hi def link hamlHelper Function 98 hi def link hamlHtmlComment hamlComment 99 hi def link hamlComment Comment 100 hi def link hamlIEConditional SpecialComment 101 hi def link hamlError Error 102 103 let b:current_syntax = "haml" 104 105 if main_syntax == "haml" 106 unlet main_syntax 107 endif 108 109 " vim:set sw=2: