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