Spade
Mini Shell
" 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: