xref: /vim-8.2.3635/runtime/syntax/mason.vim (revision 37c64c78)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:     Mason (Perl embedded in HTML)
3*37c64c78SBram Moolenaar" Maintainer:   vim-perl <[email protected]>
4*37c64c78SBram Moolenaar" Homepage:      http://github.com/vim-perl/vim-perl/tree/master
5*37c64c78SBram Moolenaar" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
6*37c64c78SBram Moolenaar" Last Change:  2017-09-12
7*37c64c78SBram Moolenaar" Contributors: Hinrik Örn Sigurðsson <[email protected]>
8*37c64c78SBram Moolenaar"               Andrew Smith <[email protected]>
9071d4279SBram Moolenaar"
10*37c64c78SBram Moolenaar" TODO:
11071d4279SBram Moolenaar"  - Fix <%text> blocks to show HTML tags but ignore Mason tags.
12071d4279SBram Moolenaar"
13071d4279SBram Moolenaar
1489bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1589bcfda6SBram Moolenaarif exists("b:current_syntax")
16071d4279SBram Moolenaar	finish
17071d4279SBram Moolenaarendif
18071d4279SBram Moolenaar
19071d4279SBram Moolenaar" The HTML syntax file included below uses this variable.
20071d4279SBram Moolenaar"
21071d4279SBram Moolenaarif !exists("main_syntax")
22071d4279SBram Moolenaar	let main_syntax = 'mason'
23071d4279SBram Moolenaarendif
24071d4279SBram Moolenaar
25071d4279SBram Moolenaar" First pull in the HTML syntax.
26071d4279SBram Moolenaar"
27071d4279SBram Moolenaarruntime! syntax/html.vim
28071d4279SBram Moolenaarunlet b:current_syntax
29071d4279SBram Moolenaar
30071d4279SBram Moolenaarsyn cluster htmlPreproc add=@masonTop
31071d4279SBram Moolenaar
32071d4279SBram Moolenaar" Now pull in the Perl syntax.
33071d4279SBram Moolenaar"
34071d4279SBram Moolenaarsyn include @perlTop syntax/perl.vim
35*37c64c78SBram Moolenaarunlet b:current_syntax
36*37c64c78SBram Moolenaarsyn include @podTop syntax/pod.vim
37071d4279SBram Moolenaar
38071d4279SBram Moolenaar" It's hard to reduce down to the correct sub-set of Perl to highlight in some
39071d4279SBram Moolenaar" of these cases so I've taken the safe option of just using perlTop in all of
40071d4279SBram Moolenaar" them. If you have any suggestions, please let me know.
41071d4279SBram Moolenaar"
42*37c64c78SBram Moolenaarsyn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
43*37c64c78SBram Moolenaarsyn cluster perlTop remove=perlBraces
44*37c64c78SBram Moolenaarsyn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop
45*37c64c78SBram Moolenaarsyn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell
46*37c64c78SBram Moolenaarsyn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment
47*37c64c78SBram Moolenaarsyn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
48*37c64c78SBram Moolenaarsyn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop
49*37c64c78SBram Moolenaarsyn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent
50*37c64c78SBram Moolenaarsyn region masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop
51071d4279SBram Moolenaar
52*37c64c78SBram Moolenaarsyn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
53071d4279SBram Moolenaar
54*37c64c78SBram Moolenaarsyn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=masonPod,@perlTop
55*37c64c78SBram Moolenaarsyn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=masonPod,@perlTop
56*37c64c78SBram Moolenaarsyn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=masonPod,@perlTop
57*37c64c78SBram Moolenaarsyn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" contains=masonPod,@perlTop
58*37c64c78SBram Moolenaarsyn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=masonPod,@perlTop
59071d4279SBram Moolenaar
60*37c64c78SBram Moolenaarsyn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="</%def>" contains=@htmlTop
61*37c64c78SBram Moolenaarsyn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="</%method>" contains=@htmlTop
62071d4279SBram Moolenaar
63*37c64c78SBram Moolenaarsyn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
64*37c64c78SBram Moolenaarsyn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
65071d4279SBram Moolenaar
66*37c64c78SBram Moolenaarsyn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=masonPod,@perlTop
67071d4279SBram Moolenaar
68071d4279SBram Moolenaarsyn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>"
69071d4279SBram Moolenaarsyn region masonText matchgroup=Delimiter start="<%text>" end="</%text>"
70071d4279SBram Moolenaar
71071d4279SBram Moolenaarsyn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" Set up default highlighting. Almost all of this is done in the included
74071d4279SBram Moolenaar" syntax files.
7589bcfda6SBram Moolenaarhi def link masonDoc Comment
76*37c64c78SBram Moolenaarhi def link masonPod Comment
77*37c64c78SBram Moolenaarhi def link masonPerlComment perlComment
78071d4279SBram Moolenaar
79071d4279SBram Moolenaarlet b:current_syntax = "mason"
80071d4279SBram Moolenaar
81071d4279SBram Moolenaarif main_syntax == 'mason'
82071d4279SBram Moolenaar	unlet main_syntax
83071d4279SBram Moolenaarendif
84