blob: a2ffc1869f32dfa3fc762808a41e6f04d0a55568 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: HTML
3" Maintainer: Claudio Fleiner <claudio@fleiner.com>
4" URL: http://www.fleiner.com/vim/syntax/html.vim
Bram Moolenaarce0842a2005-07-18 21:58:11 +00005" Last Change: 2005 Jul 18
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" Please check :help html.vim for some comments and a description of the options
8
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if !exists("main_syntax")
12 if version < 600
13 syntax clear
14 elseif exists("b:current_syntax")
15 finish
16 endif
17 let main_syntax = 'html'
18endif
19
20" don't use standard HiLink, it will not work with included syntax files
21if version < 508
22 command! -nargs=+ HtmlHiLink hi link <args>
23else
24 command! -nargs=+ HtmlHiLink hi def link <args>
25endif
26
27
28syn case ignore
29
Bram Moolenaarce0842a2005-07-18 21:58:11 +000030syn spell toplevel
31
Bram Moolenaar071d4272004-06-13 20:20:40 +000032" mark illegal characters
33syn match htmlError "[<>&]"
34
35
36" tags
37syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
38syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
39syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
Bram Moolenaarce0842a2005-07-18 21:58:11 +000040syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
41syn region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
Bram Moolenaar071d4272004-06-13 20:20:40 +000042syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
43syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
44syn match htmlTagError contained "[^>]<"ms=s+1
45
46
47" tag names
48syn keyword htmlTagName contained address applet area a base basefont
49syn keyword htmlTagName contained big blockquote br caption center
50syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
51syn keyword htmlTagName contained form hr html img
52syn keyword htmlTagName contained input isindex kbd li link map menu
53syn keyword htmlTagName contained meta ol option param pre p samp span
54syn keyword htmlTagName contained select small strike sub sup
55syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
56syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
57
58" new html 4.0 tags
59syn keyword htmlTagName contained abbr acronym bdo button col label
60syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
61syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
62
63" legal arg names
64syn keyword htmlArg contained action
65syn keyword htmlArg contained align alink alt archive background bgcolor
66syn keyword htmlArg contained border bordercolor cellpadding
67syn keyword htmlArg contained cellspacing checked class clear code codebase color
68syn keyword htmlArg contained cols colspan content coords enctype face
69syn keyword htmlArg contained gutter height hspace id
70syn keyword htmlArg contained link lowsrc marginheight
71syn keyword htmlArg contained marginwidth maxlength method name prompt
72syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
73syn keyword htmlArg contained size src start target text type url
74syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
75syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
76
77" Netscape extensions
78syn keyword htmlTagName contained frame noframes frameset nobr blink
79syn keyword htmlTagName contained layer ilayer nolayer spacer
80syn keyword htmlArg contained frameborder noresize pagex pagey above below
81syn keyword htmlArg contained left top visibility clip id noshade
82syn match htmlArg contained "\<z-index\>"
83
84" Microsoft extensions
85syn keyword htmlTagName contained marquee
86
87" html 4.0 arg names
88syn match htmlArg contained "\<\(accept-charset\|label\)\>"
89syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
90syn keyword htmlArg contained cite classid codetype compact data datetime
91syn keyword htmlArg contained declare defer dir disabled for frame
92syn keyword htmlArg contained headers hreflang lang language longdesc
93syn keyword htmlArg contained multiple nohref nowrap object profile readonly
94syn keyword htmlArg contained rules scheme scope span standby style
95syn keyword htmlArg contained summary tabindex valuetype version
96
97" special characters
98syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
99
100" Comments (the real ones or the old netscape ones)
101if exists("html_wrong_comments")
102 syn region htmlComment start=+<!--+ end=+--\s*>+
103else
104 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError
105 syn match htmlCommentError contained "[^><!]"
106 syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc
107endif
108syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+
109
110" server-parsed commands
111syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
112syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
113syn match htmlPreError contained "<!--#\S*"ms=s+4
114syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
115syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
116syn match htmlPreProcAttrError contained "\w\+="he=e-1
117syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
118
119if !exists("html_no_rendering")
120 " rendering
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000121 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000122
123 syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
124 syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
125 syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
126 syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline
127 syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline
128 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
129 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
130 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
131
132 syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
133 syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic
134 syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic
135 syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold
136 syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold
137 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
138 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
139 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
140 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
141
142 syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
143 syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop
144 syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline
145 syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline
146 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop
147 syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold
148 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
149 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
150
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000151 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152 syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop
153 syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop
154 syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop
155 syn region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop
156 syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop
157 syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop
158 syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000159 syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160endif
161
162syn keyword htmlTagName contained noscript
163syn keyword htmlSpecialTagName contained script style
164if main_syntax != 'java' || exists("java_javascript")
165 " JAVA SCRIPT
166 syn include @htmlJavaScript <sfile>:p:h/javascript.vim
167 unlet b:current_syntax
168 syn region javaScript start=+<script[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
169 syn region htmlScriptTag contained start=+<script+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
170 HtmlHiLink htmlScriptTag htmlTag
171
172 " html events (i.e. arguments that include javascript commands)
173 if exists("html_extended_events")
174 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
175 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
176 else
177 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
178 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
179 endif
180 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
181 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
182 HtmlHiLink htmlEventSQ htmlEvent
183 HtmlHiLink htmlEventDQ htmlEvent
184
185 " a javascript expression is used as an arg value
186 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
187endif
188
189if main_syntax != 'java' || exists("java_vb")
190 " VB SCRIPT
191 syn include @htmlVbScript <sfile>:p:h/vb.vim
192 unlet b:current_syntax
193 syn region javaScript start=+<script [^>]*language *=[^>]*vbscript[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
194endif
195
196syn cluster htmlJavaScript add=@htmlPreproc
197
198if main_syntax != 'java' || exists("java_css")
199 " embedded style sheets
200 syn keyword htmlArg contained media
201 syn include @htmlCss <sfile>:p:h/css.vim
202 unlet b:current_syntax
203 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
204 syn match htmlCssStyleComment contained "\(<!--\|-->\)"
205 syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
206 HtmlHiLink htmlStyleArg htmlString
207endif
208
209if main_syntax == "html"
210 " synchronizing (does not always work if a comment includes legal
211 " html tags, but doing it right would mean to always start
212 " at the first line, which is too slow)
213 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
214 syn sync match htmlHighlight groupthere javaScript "<script"
215 syn sync match htmlHighlightSkip "^.*['\"].*$"
216 syn sync minlines=10
217endif
218
219" The default highlighting.
220if version >= 508 || !exists("did_html_syn_inits")
221 if version < 508
222 let did_html_syn_inits = 1
223 endif
224 HtmlHiLink htmlTag Function
225 HtmlHiLink htmlEndTag Identifier
226 HtmlHiLink htmlArg Type
227 HtmlHiLink htmlTagName htmlStatement
228 HtmlHiLink htmlSpecialTagName Exception
229 HtmlHiLink htmlValue String
230 HtmlHiLink htmlSpecialChar Special
231
232 if !exists("html_no_rendering")
233 HtmlHiLink htmlH1 Title
234 HtmlHiLink htmlH2 htmlH1
235 HtmlHiLink htmlH3 htmlH2
236 HtmlHiLink htmlH4 htmlH3
237 HtmlHiLink htmlH5 htmlH4
238 HtmlHiLink htmlH6 htmlH5
239 HtmlHiLink htmlHead PreProc
240 HtmlHiLink htmlTitle Title
241 HtmlHiLink htmlBoldItalicUnderline htmlBoldUnderlineItalic
242 HtmlHiLink htmlUnderlineBold htmlBoldUnderline
243 HtmlHiLink htmlUnderlineItalicBold htmlBoldUnderlineItalic
244 HtmlHiLink htmlUnderlineBoldItalic htmlBoldUnderlineItalic
245 HtmlHiLink htmlItalicUnderline htmlUnderlineItalic
246 HtmlHiLink htmlItalicBold htmlBoldItalic
247 HtmlHiLink htmlItalicBoldUnderline htmlBoldUnderlineItalic
248 HtmlHiLink htmlItalicUnderlineBold htmlBoldUnderlineItalic
249 HtmlHiLink htmlLink Underlined
250 if !exists("html_my_rendering")
251 hi def htmlBold term=bold cterm=bold gui=bold
252 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
253 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
254 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
255 hi def htmlUnderline term=underline cterm=underline gui=underline
256 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
257 hi def htmlItalic term=italic cterm=italic gui=italic
258 endif
259 endif
260
261 HtmlHiLink htmlPreStmt PreProc
262 HtmlHiLink htmlPreError Error
263 HtmlHiLink htmlPreProc PreProc
264 HtmlHiLink htmlPreAttr String
265 HtmlHiLink htmlPreProcAttrName PreProc
266 HtmlHiLink htmlPreProcAttrError Error
267 HtmlHiLink htmlSpecial Special
268 HtmlHiLink htmlSpecialChar Special
269 HtmlHiLink htmlString String
270 HtmlHiLink htmlStatement Statement
271 HtmlHiLink htmlComment Comment
272 HtmlHiLink htmlCommentPart Comment
273 HtmlHiLink htmlValue String
274 HtmlHiLink htmlCommentError htmlError
275 HtmlHiLink htmlTagError htmlError
276 HtmlHiLink htmlEvent javaScript
277 HtmlHiLink htmlError Error
278
279 HtmlHiLink javaScript Special
280 HtmlHiLink javaScriptExpression javaScript
281 HtmlHiLink htmlCssStyleComment Comment
282 HtmlHiLink htmlCssDefinition Special
283endif
284
285delcommand HtmlHiLink
286
287let b:current_syntax = "html"
288
289if main_syntax == 'html'
290 unlet main_syntax
291endif
292
293" vim: ts=8