1" WebMacro syntax file
2" Language:     WebMacro
3" Maintainer:   Claudio Fleiner <claudio@fleiner.com>
4" URL:		http://www.fleiner.com/vim/syntax/webmacro.vim
5" Last Change:  2003 May 11
6
7" webmacro is a nice little language that you should
8" check out if you use java servlets.
9" webmacro: http://www.webmacro.org
10
11" For version 5.x: Clear all syntax items
12" For version 6.x: Quit when a syntax file was already loaded
13if !exists("main_syntax")
14  if version < 600
15    syntax clear
16  elseif exists("b:current_syntax")
17    finish
18  endif
19  let main_syntax = 'webmacro'
20endif
21
22
23if version < 600
24  source <sfile>:p:h/html.vim
25else
26  runtime! syntax/html.vim
27  unlet b:current_syntax
28endif
29
30syn cluster htmlPreProc add=webmacroIf,webmacroUse,webmacroBraces,webmacroParse,webmacroInclude,webmacroSet,webmacroForeach,webmacroComment
31
32syn match webmacroVariable "\$[a-zA-Z0-9.()]*;\="
33syn match webmacroNumber "[-+]\=\d\+[lL]\=" contained
34syn keyword webmacroBoolean true false contained
35syn match webmacroSpecial "\\." contained
36syn region  webmacroString   contained start=+"+ end=+"+ contains=webmacroSpecial,webmacroVariable
37syn region  webmacroString   contained start=+'+ end=+'+ contains=webmacroSpecial,webmacroVariable
38syn region webmacroList contained matchgroup=Structure start="\[" matchgroup=Structure end="\]" contains=webmacroString,webmacroVariable,webmacroNumber,webmacroBoolean,webmacroList
39
40syn region webmacroIf start="#if" start="#else" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
41syn region webmacroForeach start="#foreach" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
42syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
43syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
44syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
45syn region webmacroUse matchgroup=PreProc start="#use .*" matchgroup=PreProc end="^-.*" contains=webmacroHash,@HtmlTop
46syn region webmacroBraces matchgroup=Structure start="{" matchgroup=Structure end="}" contained transparent
47syn match webmacroBracesError "[{}]"
48syn match webmacroComment "##.*$"
49syn match webmacroHash "[#{}\$]" contained
50
51" Define the default highlighting.
52" For version 5.7 and earlier: only when not done already
53" For version 5.8 and later: only when an item doesn't have highlighting yet
54if version >= 508 || !exists("did_webmacro_syn_inits")
55  if version < 508
56    let did_webmacro_syn_inits = 1
57    command -nargs=+ HiLink hi link <args>
58  else
59    command -nargs=+ HiLink hi def link <args>
60  endif
61
62  HiLink webmacroComment CommentTitle
63  HiLink webmacroVariable PreProc
64  HiLink webmacroIf webmacroStatement
65  HiLink webmacroForeach webmacroStatement
66  HiLink webmacroSet webmacroStatement
67  HiLink webmacroInclude webmacroStatement
68  HiLink webmacroParse webmacroStatement
69  HiLink webmacroStatement Function
70  HiLink webmacroNumber Number
71  HiLink webmacroBoolean Boolean
72  HiLink webmacroSpecial Special
73  HiLink webmacroString String
74  HiLink webmacroBracesError Error
75  delcommand HiLink
76endif
77
78let b:current_syntax = "webmacro"
79
80if main_syntax == 'webmacro'
81  unlet main_syntax
82endif
83