blob: 5957930c8e8e685bc8c2e3b22d0ec6cee63ca41e [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: WML - Website MetaLanguage
3" Maintainer: Gerfried Fuchs <alfie@ist.org>
4" Filenames: *.wml
5" Last Change: 07 Feb 2002
6" URL: http://alfie.ist.org/software/vim/syntax/wml.vim
7"
8" Original Version: Craig Small <csmall@eye-net.com.au>
9
10" Comments are very welcome - but please make sure that you are commenting on
11" the latest version of this file.
12" SPAM is _NOT_ welcome - be ready to be reported!
13
14" If you are looking for the "Wireless Markup Language" syntax file,
15" please take a look at the wap.vim file done by Ralf Schandl, soon in a
16" vim-package around your corner :)
17
18
19" For version 5.x: Clear all syntax items
20" For version 6.x: Quit when a syntax file was already loaded
21if version < 600
22 syn clear
23elseif exists("b:current_syntax")
24 finish
25endif
26
27
28" A lot of the web stuff looks like HTML so we load that first
29if version < 600
30 so <sfile>:p:h/html.vim
31else
32 runtime! syntax/html.vim
33endif
34unlet b:current_syntax
35
36if !exists("main_syntax")
37 let main_syntax = 'wml'
38endif
39
40" special character
41syn match wmlNextLine "\\$"
42
43" Redfine htmlTag
44syn clear htmlTag
45syn region htmlTag start=+<[^/<]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition
46
47"
48" Add in extra Arguments used by wml
49syn keyword htmlTagName contained gfont imgbg imgdot lowsrc
50syn keyword htmlTagName contained navbar:define navbar:header
51syn keyword htmlTagName contained navbar:footer navbar:prolog
52syn keyword htmlTagName contained navbar:epilog navbar:button
53syn keyword htmlTagName contained navbar:filter navbar:debug
54syn keyword htmlTagName contained navbar:render
55syn keyword htmlTagName contained preload rollover
56syn keyword htmlTagName contained space hspace vspace over
57syn keyword htmlTagName contained ps ds pi ein big sc spaced headline
58syn keyword htmlTagName contained ue subheadline zwue verbcode
59syn keyword htmlTagName contained isolatin pod sdf text url verbatim
60syn keyword htmlTagName contained xtable
61syn keyword htmlTagName contained csmap fsview import box
62syn keyword htmlTagName contained case:upper case:lower
63syn keyword htmlTagName contained grid cell info lang: logo page
64syn keyword htmlTagName contained set-var restore
65syn keyword htmlTagName contained array:push array:show set-var ifdef
66syn keyword htmlTagName contained say m4 symbol dump enter divert
67syn keyword htmlTagName contained toc
68syn keyword htmlTagName contained wml card do refresh oneevent catch spawn
69
70"
71" The wml arguments
72syn keyword htmlArg contained adjust background base bdcolor bdspace
73syn keyword htmlArg contained bdwidth complete copyright created crop
74syn keyword htmlArg contained direction description domainname eperlfilter
75syn keyword htmlArg contained file hint imgbase imgstar interchar interline
76syn keyword htmlArg contained keephr keepindex keywords layout spacing
77syn keyword htmlArg contained padding nonetscape noscale notag notypo
78syn keyword htmlArg contained onload oversrc pos select slices style
79syn keyword htmlArg contained subselected txtcol_select txtcol_normal
80syn keyword htmlArg contained txtonly via
81syn keyword htmlArg contained mode columns localsrc ordered
82
83
84" Lines starting with an # are usually comments
85syn match wmlComment "^\s*#.*"
86" The different exceptions to comments
87syn match wmlSharpBang "^#!.*"
88syn match wmlUsed contained "\s\s*[A-Za-z:_-]*"
89syn match wmlUse "^\s*#\s*use\s\+" contains=wmlUsed
90syn match wmlInclude "^\s*#\s*include.+"
91
92syn region wmlBody contained start=+<<+ end=+>>+
93
94syn match wmlLocationId contained "[A-Za-z]\+"
95syn region wmlLocation start=+<<+ end=+>>+ contains=wmlLocationId
96"syn region wmlLocation start=+{#+ end=+#}+ contains=wmlLocationId
97"syn region wmlLocationed contained start=+<<+ end=+>>+ contains=wmlLocationId
98
99syn match wmlDivert "\.\.[a-zA-Z_]\+>>"
100syn match wmlDivertEnd "<<\.\."
101" new version
102"syn match wmlDivert "{#[a-zA-Z_]\+#:"
103"syn match wmlDivertEnd ":##}"
104
105syn match wmlDefineName contained "\s\+[A-Za-z-]\+"
106syn region htmlTagName start="\<\(define-tag\|define-region\)" end="\>" contains=wmlDefineName
107
108" The perl include stuff
109if main_syntax != 'perl'
110 " Perl script
111 if version < 600
112 syn include @wmlPerlScript <sfile>:p:h/perl.vim
113 else
114 syn include @wmlPerlScript syntax/perl.vim
115 endif
116 unlet b:current_syntax
117
118 syn region perlScript start=+<perl>+ keepend end=+</perl>+ contains=@wmlPerlScript,wmlPerlTag
119" eperl between '<:' and ':>' -- Alfie [1999-12-26]
120 syn region perlScript start=+<:+ keepend end=+:>+ contains=@wmlPerlScript,wmlPerlTag
121 syn match wmlPerlTag contained "</*perl>" contains=wmlPerlTagN
122 syn keyword wmlPerlTagN contained perl
123
124 hi link wmlPerlTag htmlTag
125 hi link wmlPerlTagN htmlStatement
126endif
127
128" verbatim tags -- don't highlight anything in between -- Alfie [2002-02-07]
129syn region wmlVerbatimText start=+<verbatim>+ keepend end=+</verbatim>+ contains=wmlVerbatimTag
130syn match wmlVerbatimTag contained "</*verbatim>" contains=wmlVerbatimTagN
131syn keyword wmlVerbatimTagN contained verbatim
132hi link wmlVerbatimTag htmlTag
133hi link wmlVerbatimTagN htmlStatement
134
135if main_syntax == "html"
136 syn sync match wmlHighlight groupthere NONE "</a-zA-Z]"
137 syn sync match wmlHighlight groupthere perlScript "<perl>"
138 syn sync match wmlHighlightSkip "^.*['\"].*$"
139 syn sync minlines=10
140endif
141
142" Define the default highlighting.
143" For version 5.7 and earlier: only when not done already
144" For version 5.8 and later: only when an item doesn't have highlighting yet
145if version >= 508 || !exists("did_wml_syn_inits")
146 let did_wml_syn_inits = 1
147 if version < 508
148 let did_wml_syn_inits = 1
149 command -nargs=+ HiLink hi link <args>
150 else
151 command -nargs=+ HiLink hi def link <args>
152 endif
153
154 HiLink wmlNextLine Special
155 HiLink wmlUse Include
156 HiLink wmlUsed String
157 HiLink wmlBody Special
158 HiLink wmlDiverted Label
159 HiLink wmlDivert Delimiter
160 HiLink wmlDivertEnd Delimiter
161 HiLink wmlLocationId Label
162 HiLink wmlLocation Delimiter
163" HiLink wmlLocationed Delimiter
164 HiLink wmlDefineName String
165 HiLink wmlComment Comment
166 HiLink wmlInclude Include
167 HiLink wmlSharpBang PreProc
168
169 delcommand HiLink
170endif
171
172let b:current_syntax = "wml"