blob: 6789e11aefd2da6e1489de0ccf7846ed8ceb65c3 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Mason (Perl embedded in HTML)
3" Maintainer: Andrew Smith <andrewdsmith@yahoo.com>
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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020016" quit when a syntax file was already loaded
17if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000018 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"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020029runtime! syntax/html.vim
30unlet b:current_syntax
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
32syn cluster htmlPreproc add=@masonTop
33
34" Now pull in the Perl syntax.
35"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020036syn include @perlTop syntax/perl.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020069hi def link masonDoc Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71let b:current_syntax = "mason"
72
73if main_syntax == 'mason'
74 unlet main_syntax
75endif