7
|
1 " Vim syntax file
|
|
2 " Language: HTML
|
|
3 " Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
|
4 " URL: http://www.fleiner.com/vim/syntax/html.vim
|
391
|
5 " Last Change: 2005 Jul 05
|
7
|
6
|
|
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
|
|
11 if !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'
|
|
18 endif
|
|
19
|
|
20 " don't use standard HiLink, it will not work with included syntax files
|
|
21 if version < 508
|
|
22 command! -nargs=+ HtmlHiLink hi link <args>
|
|
23 else
|
|
24 command! -nargs=+ HtmlHiLink hi def link <args>
|
|
25 endif
|
|
26
|
|
27
|
|
28 syn case ignore
|
|
29
|
|
30 " mark illegal characters
|
|
31 syn match htmlError "[<>&]"
|
|
32
|
|
33
|
|
34 " tags
|
|
35 syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
|
|
36 syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
|
|
37 syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
|
391
|
38 syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError,@NoSpell
|
|
39 syn region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,@NoSpell
|
7
|
40 syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
|
|
41 syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
|
|
42 syn match htmlTagError contained "[^>]<"ms=s+1
|
|
43
|
|
44
|
|
45 " tag names
|
|
46 syn keyword htmlTagName contained address applet area a base basefont
|
|
47 syn keyword htmlTagName contained big blockquote br caption center
|
|
48 syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
|
|
49 syn keyword htmlTagName contained form hr html img
|
|
50 syn keyword htmlTagName contained input isindex kbd li link map menu
|
|
51 syn keyword htmlTagName contained meta ol option param pre p samp span
|
|
52 syn keyword htmlTagName contained select small strike sub sup
|
|
53 syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
|
|
54 syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
|
|
55
|
|
56 " new html 4.0 tags
|
|
57 syn keyword htmlTagName contained abbr acronym bdo button col label
|
|
58 syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
|
|
59 syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
|
|
60
|
|
61 " legal arg names
|
|
62 syn keyword htmlArg contained action
|
|
63 syn keyword htmlArg contained align alink alt archive background bgcolor
|
|
64 syn keyword htmlArg contained border bordercolor cellpadding
|
|
65 syn keyword htmlArg contained cellspacing checked class clear code codebase color
|
|
66 syn keyword htmlArg contained cols colspan content coords enctype face
|
|
67 syn keyword htmlArg contained gutter height hspace id
|
|
68 syn keyword htmlArg contained link lowsrc marginheight
|
|
69 syn keyword htmlArg contained marginwidth maxlength method name prompt
|
|
70 syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
|
|
71 syn keyword htmlArg contained size src start target text type url
|
|
72 syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
|
|
73 syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
|
|
74
|
|
75 " Netscape extensions
|
|
76 syn keyword htmlTagName contained frame noframes frameset nobr blink
|
|
77 syn keyword htmlTagName contained layer ilayer nolayer spacer
|
|
78 syn keyword htmlArg contained frameborder noresize pagex pagey above below
|
|
79 syn keyword htmlArg contained left top visibility clip id noshade
|
|
80 syn match htmlArg contained "\<z-index\>"
|
|
81
|
|
82 " Microsoft extensions
|
|
83 syn keyword htmlTagName contained marquee
|
|
84
|
|
85 " html 4.0 arg names
|
|
86 syn match htmlArg contained "\<\(accept-charset\|label\)\>"
|
|
87 syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
|
|
88 syn keyword htmlArg contained cite classid codetype compact data datetime
|
|
89 syn keyword htmlArg contained declare defer dir disabled for frame
|
|
90 syn keyword htmlArg contained headers hreflang lang language longdesc
|
|
91 syn keyword htmlArg contained multiple nohref nowrap object profile readonly
|
|
92 syn keyword htmlArg contained rules scheme scope span standby style
|
|
93 syn keyword htmlArg contained summary tabindex valuetype version
|
|
94
|
|
95 " special characters
|
|
96 syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
|
|
97
|
|
98 " Comments (the real ones or the old netscape ones)
|
|
99 if exists("html_wrong_comments")
|
|
100 syn region htmlComment start=+<!--+ end=+--\s*>+
|
|
101 else
|
|
102 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError
|
|
103 syn match htmlCommentError contained "[^><!]"
|
|
104 syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc
|
|
105 endif
|
|
106 syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+
|
|
107
|
|
108 " server-parsed commands
|
|
109 syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
|
|
110 syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
|
|
111 syn match htmlPreError contained "<!--#\S*"ms=s+4
|
|
112 syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
|
|
113 syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
|
|
114 syn match htmlPreProcAttrError contained "\w\+="he=e-1
|
|
115 syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
|
|
116
|
|
117 if !exists("html_no_rendering")
|
|
118 " rendering
|
391
|
119 syn cluster htmlTop contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
|
7
|
120
|
|
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
|
391
|
149 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
|
7
|
150 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
|
|
158 endif
|
|
159
|
|
160 syn keyword htmlTagName contained noscript
|
|
161 syn keyword htmlSpecialTagName contained script style
|
|
162 if 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
|
|
185 endif
|
|
186
|
|
187 if 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
|
|
192 endif
|
|
193
|
|
194 syn cluster htmlJavaScript add=@htmlPreproc
|
|
195
|
|
196 if 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
|
|
205 endif
|
|
206
|
|
207 if 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
|
|
215 endif
|
|
216
|
|
217 " The default highlighting.
|
|
218 if 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
|
|
281 endif
|
|
282
|
|
283 delcommand HtmlHiLink
|
|
284
|
|
285 let b:current_syntax = "html"
|
|
286
|
|
287 if main_syntax == 'html'
|
|
288 unlet main_syntax
|
|
289 endif
|
|
290
|
|
291 " vim: ts=8
|