xref: /vim-8.2.3635/runtime/syntax/haml.vim (revision c08ee747)
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