1" Vim syntax file 2" Language: Mason (Perl embedded in HTML) 3" Maintainer: Andrew Smith <[email protected]> 4" Last change: 2003 May 11 5" URL: http://www.masonhq.com/editors/mason.vim 6" 7" This seems to work satisfactorily with html.vim and perl.vim for version 5.5. 8" Please mail any fixes or improvements to the above address. Things that need 9" doing include: 10" 11" - Add match for component names in <& &> blocks. 12" - Add match for component names in <%def> and <%method> block delimiters. 13" - Fix <%text> blocks to show HTML tags but ignore Mason tags. 14" 15 16" quit when a syntax file was already loaded 17if exists("b:current_syntax") 18 finish 19endif 20 21" The HTML syntax file included below uses this variable. 22" 23if !exists("main_syntax") 24 let main_syntax = 'mason' 25endif 26 27" First pull in the HTML syntax. 28" 29runtime! syntax/html.vim 30unlet b:current_syntax 31 32syn cluster htmlPreproc add=@masonTop 33 34" Now pull in the Perl syntax. 35" 36syn include @perlTop syntax/perl.vim 37 38" It's hard to reduce down to the correct sub-set of Perl to highlight in some 39" of these cases so I've taken the safe option of just using perlTop in all of 40" them. If you have any suggestions, please let me know. 41" 42syn region masonLine matchgroup=Delimiter start="^%" end="$" contains=@perlTop 43syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop 44syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=@perlTop 45syn region masonComp keepend matchgroup=Delimiter start="<&" end="&>" contains=@perlTop 46 47syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=@perlTop 48 49syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=@perlTop 50syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=@perlTop 51syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=@perlTop 52syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=@perlTop 53 54syn region masonDef matchgroup=Delimiter start="<%def[^>]*>" end="</%def>" contains=@htmlTop 55syn region masonMethod matchgroup=Delimiter start="<%method[^>]*>" end="</%method>" contains=@htmlTop 56 57syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=@perlTop 58syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=@perlTop 59 60syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=@perlTop 61 62syn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>" 63syn region masonText matchgroup=Delimiter start="<%text>" end="</%text>" 64 65syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText 66 67" Set up default highlighting. Almost all of this is done in the included 68" syntax files. 69hi def link masonDoc Comment 70 71let b:current_syntax = "mason" 72 73if main_syntax == 'mason' 74 unlet main_syntax 75endif 76