1c236c16dSBram Moolenaar" Vim syntax file 2c236c16dSBram Moolenaar" Language: Haml 37a329911SBram Moolenaar" Maintainer: Tim Pope <[email protected]> 4c236c16dSBram Moolenaar" Filenames: *.haml 5*c08ee747SBram Moolenaar" Last Change: 2019 Dec 05 6c236c16dSBram Moolenaar 7c236c16dSBram Moolenaarif exists("b:current_syntax") 8c236c16dSBram Moolenaar finish 9c236c16dSBram Moolenaarendif 10c236c16dSBram Moolenaar 11c236c16dSBram Moolenaarif !exists("main_syntax") 12c236c16dSBram Moolenaar let main_syntax = 'haml' 13c236c16dSBram Moolenaarendif 14c236c16dSBram Moolenaarlet b:ruby_no_expensive = 1 15c236c16dSBram Moolenaar 16c236c16dSBram Moolenaarruntime! syntax/html.vim 17c236c16dSBram Moolenaarunlet! b:current_syntax 18c236c16dSBram Moolenaarsilent! syn include @hamlSassTop syntax/sass.vim 19c236c16dSBram Moolenaarunlet! b:current_syntax 20c236c16dSBram Moolenaarsyn include @hamlRubyTop syntax/ruby.vim 21c236c16dSBram Moolenaar 22c236c16dSBram Moolenaarsyn case match 23c236c16dSBram Moolenaar 246af737fdSBram Moolenaarsyn region rubyCurlyBlock start="{" end="}" contains=@hamlRubyTop contained 257a329911SBram Moolenaarsyn cluster hamlRubyTop add=rubyCurlyBlock 267a329911SBram Moolenaar 277a329911SBram Moolenaarsyn cluster hamlComponent contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable 287a329911SBram Moolenaarsyn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter 29c236c16dSBram Moolenaarsyn cluster hamlTop contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment 30c236c16dSBram Moolenaar 317a329911SBram Moolenaarsyn match hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable 32c236c16dSBram Moolenaar 330ed0eea2SBram Moolenaarsyn match hamlTag "%\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent 347a329911SBram Moolenaarsyn region hamlAttributes matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent 357a329911SBram Moolenaarsyn region hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent 36c236c16dSBram Moolenaarsyn region hamlObject matchgroup=hamlObjectDelimiter start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent 37c236c16dSBram Moolenaarsyn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable 38c236c16dSBram Moolenaarsyn match hamlSelfCloser "/" contained 39c236c16dSBram Moolenaarsyn match hamlClassChar "\." contained nextgroup=hamlClass 407a329911SBram Moolenaarsyn match hamlIdChar "#{\@!" contained nextgroup=hamlId 41*c08ee747SBram Moolenaarsyn match hamlClass "\%(\w\|-\|\:\)\+" contained nextgroup=@hamlComponent 42c236c16dSBram Moolenaarsyn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent 43c236c16dSBram Moolenaarsyn region hamlDocType start="^\s*!!!" end="$" 44c236c16dSBram Moolenaar 457a329911SBram Moolenaarsyn region hamlRuby matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend 467a329911SBram Moolenaarsyn region hamlRuby matchgroup=hamlRubyChar start="-" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend 47c236c16dSBram Moolenaarsyn match hamlPlainChar "\\" contained 487a329911SBram Moolenaarsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop 497a329911SBram Moolenaarsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape 506af737fdSBram Moolenaarsyn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD 517a329911SBram Moolenaarsyn match hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)" 52ed39e1d5SBram Moolenaarsyn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop 53c236c16dSBram Moolenaar 547a329911SBram Moolenaarsyn region hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape 557a329911SBram Moolenaarsyn region hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape 567a329911SBram Moolenaarsyn match hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained 577a329911SBram Moolenaar 586af737fdSBram Moolenaarsyn match hamlHelper "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop 596af737fdSBram Moolenaarsyn 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 60c236c16dSBram Moolenaar 61ed39e1d5SBram Moolenaarsyn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline 626af737fdSBram Moolenaarsyn region hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlInterpolation 636af737fdSBram Moolenaarsyn region hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=hamlInterpolation 647a329911SBram Moolenaarsyn region hamlErbFilter matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation 657a329911SBram Moolenaarsyn region hamlRubyFilter matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop 666af737fdSBram Moolenaarsyn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,hamlInterpolation keepend 676af737fdSBram Moolenaarsyn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend 687a329911SBram Moolenaarsyn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop 69c236c16dSBram Moolenaar 7089bcfda6SBram Moolenaarsyn region hamlJavascriptBlock start="^\z(\s*\)%script\%((type=[\"']text/javascript[\"'])\)\=\s*$" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend 717a329911SBram Moolenaarsyn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend 72c236c16dSBram Moolenaarsyn match hamlError "\$" contained 73c236c16dSBram Moolenaar 747a329911SBram Moolenaarsyn region hamlComment start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo 757a329911SBram Moolenaarsyn region hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo 76c236c16dSBram Moolenaarsyn match hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment 77c236c16dSBram Moolenaar 78c236c16dSBram Moolenaarhi def link hamlSelfCloser Special 79c236c16dSBram Moolenaarhi def link hamlDespacer Special 80c236c16dSBram Moolenaarhi def link hamlClassChar Special 81c236c16dSBram Moolenaarhi def link hamlIdChar Special 82c236c16dSBram Moolenaarhi def link hamlTag Special 83c236c16dSBram Moolenaarhi def link hamlClass Type 84c236c16dSBram Moolenaarhi def link hamlId Identifier 85c236c16dSBram Moolenaarhi def link hamlPlainChar Special 86c236c16dSBram Moolenaarhi def link hamlInterpolatableChar hamlRubyChar 87c236c16dSBram Moolenaarhi def link hamlRubyOutputChar hamlRubyChar 88c236c16dSBram Moolenaarhi def link hamlRubyChar Special 89c236c16dSBram Moolenaarhi def link hamlInterpolationDelimiter Delimiter 907a329911SBram Moolenaarhi def link hamlInterpolationEscape Special 917a329911SBram Moolenaarhi def link hamlAttributeString String 927a329911SBram Moolenaarhi def link hamlAttributeVariable Identifier 93c236c16dSBram Moolenaarhi def link hamlDocType PreProc 94c236c16dSBram Moolenaarhi def link hamlFilter PreProc 95c236c16dSBram Moolenaarhi def link hamlAttributesDelimiter Delimiter 96c236c16dSBram Moolenaarhi def link hamlObjectDelimiter Delimiter 97c236c16dSBram Moolenaarhi def link hamlHelper Function 98c236c16dSBram Moolenaarhi def link hamlHtmlComment hamlComment 99c236c16dSBram Moolenaarhi def link hamlComment Comment 100c236c16dSBram Moolenaarhi def link hamlIEConditional SpecialComment 101c236c16dSBram Moolenaarhi def link hamlError Error 102c236c16dSBram Moolenaar 103c236c16dSBram Moolenaarlet b:current_syntax = "haml" 104c236c16dSBram Moolenaar 1057a329911SBram Moolenaarif main_syntax == "haml" 1067a329911SBram Moolenaar unlet main_syntax 1077a329911SBram Moolenaarendif 1087a329911SBram Moolenaar 109c236c16dSBram Moolenaar" vim:set sw=2: 110