Merged from the latest developing branch.
[MacVim.git] / runtime / syntax / haml.vim
blob8b22d8c4891eca85d31ddc7a5217d5755e9ef41d
1 " Vim syntax file
2 " Language:     Haml
3 " Maintainer:   Tim Pope <vimNOSPAM@tpope.info>
4 " Filenames:    *.haml
6 if exists("b:current_syntax")
7   finish
8 endif
10 if !exists("main_syntax")
11   let main_syntax = 'haml'
12 endif
13 let b:ruby_no_expensive = 1
15 runtime! syntax/html.vim
16 unlet! b:current_syntax
17 silent! syn include @hamlSassTop syntax/sass.vim
18 unlet! b:current_syntax
19 syn include @hamlRubyTop syntax/ruby.vim
21 syn case match
23 syn cluster hamlComponent    contains=hamlAttributes,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
24 syn cluster hamlEmbeddedRuby contains=hamlAttributes,hamlObject,hamlRuby,hamlRubyFilter
25 syn cluster hamlTop          contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment
27 syn match   hamlBegin "^\s*[<>&]\@!" nextgroup=hamlTag,hamlAttributes,hamlClassChar,hamlIdChar,hamlObject,hamlRuby,hamlPlainChar,hamlInterpolatable
29 syn match   hamlTag        "%\w\+" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent
30 syn region  hamlAttributes matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
31 syn region  hamlObject     matchgroup=hamlObjectDelimiter   start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
32 syn match   hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
33 syn match   hamlSelfCloser "/" contained
34 syn match   hamlClassChar "\." contained nextgroup=hamlClass
35 syn match   hamlIdChar    "#"  contained nextgroup=hamlId
36 syn match   hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
37 syn match   hamlId    "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
38 syn region  hamlDocType start="^\s*!!!" end="$"
40 syn region  hamlRuby   matchgroup=hamlRubyOutputChar start="[=~]" end="$" contained contains=@hamlRubyTop keepend
41 syn region  hamlRuby   matchgroup=hamlRubyChar       start="-"    end="$" contained contains=@hamlRubyTop keepend
42 syn match   hamlPlainChar "\\" contained
43 syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="==" end="$" keepend contained contains=hamlInterpolation
44 syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contained contains=@hamlRubyTop
46 syn match   hamlHelper  "\<action_view?\|\.\@<!\<\%(flatten\|open\|puts\)" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
47 syn keyword hamlHelper   capture_haml find_and_preserve  html_attrs init_haml_helpers list_of preced preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
49 syn region  hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|erb\|redcloth\|textile\|markdown\)\s*$" end="^\%(\z1 \)\@!" contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlComment,@htmlTop
50 syn region  hamlRubyFilter  matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \)\@!" contains=@hamlRubyTop
51 syn region  hamlSassFilter  matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \)\@!" contains=@hamlSassTop
53 syn region  hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \)\@!" contains=@hamlTop,@htmlJavaScript keepend
54 syn region  hamlCssBlock        start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \)\@!" contains=@hamlTop,@htmlCss keepend
55 syn match   hamlError "\$" contained
57 syn region  hamlComment     start="^\z(\s*\)-#" end="^\%(\z1 \)\@!" contains=rubyTodo
58 syn region  hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \)\@!" contains=@hamlTop,rubyTodo
59 syn match   hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment
61 hi def link hamlSelfCloser             Special
62 hi def link hamlDespacer               Special
63 hi def link hamlClassChar              Special
64 hi def link hamlIdChar                 Special
65 hi def link hamlTag                    Special
66 hi def link hamlClass                  Type
67 hi def link hamlId                     Identifier
68 hi def link hamlPlainChar              Special
69 hi def link hamlInterpolatableChar     hamlRubyChar
70 hi def link hamlRubyOutputChar         hamlRubyChar
71 hi def link hamlRubyChar               Special
72 hi def link hamlInterpolationDelimiter Delimiter
73 hi def link hamlDocType                PreProc
74 hi def link hamlFilter                 PreProc
75 hi def link hamlAttributesDelimiter    Delimiter
76 hi def link hamlObjectDelimiter        Delimiter
77 hi def link hamlHelper                 Function
78 hi def link hamlHtmlComment            hamlComment
79 hi def link hamlComment                Comment
80 hi def link hamlIEConditional          SpecialComment
81 hi def link hamlError                  Error
83 let b:current_syntax = "haml"
85 " vim:set sw=2: