" Vim syntax file " Language: Mako " Maintainer: Armin Ronacher " URL: http://lucumr.pocoo.org/ " Last Change: 2013-05-01 " Version: 0.6.1+ " " Thanks to Brine Rue who noticed a bug in the " delimiter handling. " " Known Limitations " the <%text> block does not have correct attributes " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif if !exists("b:mako_outer_lang") if exists("g:mako_default_outer_lang") let b:mako_outer_lang = g:mako_default_outer_lang else let b:mako_outer_lang = "html" endif endif if !exists("main_syntax") let main_syntax = b:mako_outer_lang endif "Source the outer syntax file execute "ru! syntax/" . b:mako_outer_lang . ".vim" if exists("b:current_syntax") unlet b:current_syntax endif if b:mako_outer_lang == "html" " tell html.vim what syntax groups should take precedence (see :help html.vim) syn cluster htmlPreproc add=makoLine,makoVariable,makoTag,makoDocComment,makoDefEnd,makoText,makoDelim,makoEnd,makoComment,makoEscape endif "Put the python syntax file in @pythonTop syn include @pythonTop syntax/python.vim " End keywords syn keyword makoEnd contained endfor endwhile endif endtry enddef " Block rules syn region makoLine matchgroup=makoDelim start=#^\s*%# end=#$# keepend contains=@pythonTop,makoEnd syn region makoBlock matchgroup=makoDelim start=#<%!\?# end=#%># keepend contains=@pythonTop,makoEnd " Variables syn region makoNested start="{" end="}" transparent display contained contains=makoNested,@pythonTop syn region makoVariable matchgroup=makoDelim start=#\${# end=#}# contains=makoNested,@pythonTop " Comments syn region makoComment start="^\s*##" end="$" syn region makoDocComment matchgroup=makoDelim start="<%doc>" end="" keepend " Literal Blocks syn region makoText matchgroup=makoDelim start="<%text[^>]*>" end="" " Attribute Sublexing syn match makoAttributeKey containedin=makoTag contained "[a-zA-Z_][a-zA-Z0-9_]*=" syn region makoAttributeValue containedin=makoTag contained start=/"/ skip=/\\"/ end=/"/ syn region makoAttributeValue containedin=MakoTag contained start=/'/ skip=/\\'/ end=/'/ " Tags syn region makoTag matchgroup=makoDelim start="<%\(def\|call\|page\|include\|namespace\|inherit\|block\|[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*\)\>" end="/\?>" syn match makoDelim "" syn region makoJavaScript matchgroup=makoDelim start=+<%block .*js.*>+ keepend end=++ contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc,makoLine,makoBlock,makoVariable syn region makoCssStyle matchgroup=makoDelim start=+<%block .*css.*>+ keepend end=++ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc,makoLine,makoBlock,makoVariable " Newline Escapes syn match makoEscape /\\$/ " Default highlighting links if version >= 508 || !exists("did_mako_syn_inits") if version < 508 let did_mako_syn_inits = 1 com -nargs=+ HiLink hi link else com -nargs=+ HiLink hi def link endif HiLink makoDocComment makoComment HiLink makoDefEnd makoDelim HiLink makoAttributeKey Type HiLink makoAttributeValue String HiLink makoText Normal HiLink makoDelim Preproc HiLink makoEnd Keyword HiLink makoComment Comment HiLink makoEscape Special delc HiLink endif let b:current_syntax = b:mako_outer_lang