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