blob: 605db3ae1c3d0f268f190d6c99d5754a83c82284 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaarb529cfb2022-07-25 15:42:07 +01002" Language: HTML
3" Maintainer: Doug Kearns <dougkearns@gmail.com>
4" Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
5" Claudio Fleiner <claudio@fleiner.com>
Bram Moolenaard13166e2022-11-18 21:49:57 +00006" Last Change: 2022 Nov 18
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
8" Please check :help html.vim for some comments and a description of the options
9
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020010" quit when a syntax file was already loaded
Bram Moolenaar071d4272004-06-13 20:20:40 +000011if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020012 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000013 finish
14 endif
15 let main_syntax = 'html'
16endif
17
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020018let s:cpo_save = &cpo
19set cpo&vim
20
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000021syntax spell toplevel
Bram Moolenaar071d4272004-06-13 20:20:40 +000022
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010023syn include @htmlXml syntax/xml.vim
24unlet b:current_syntax
25
Bram Moolenaar071d4272004-06-13 20:20:40 +000026syn case ignore
27
28" mark illegal characters
29syn match htmlError "[<>&]"
30
31
32" tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010033syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
34syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
35syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
36syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
37syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
38syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
39syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
Bram Moolenaar071d4272004-06-13 20:20:40 +000040syn match htmlTagError contained "[^>]<"ms=s+1
41
42
43" tag names
44syn keyword htmlTagName contained address applet area a base basefont
45syn keyword htmlTagName contained big blockquote br caption center
46syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
47syn keyword htmlTagName contained form hr html img
48syn keyword htmlTagName contained input isindex kbd li link map menu
49syn keyword htmlTagName contained meta ol option param pre p samp span
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010050syn keyword htmlTagName contained select small strike sub sup
Bram Moolenaar071d4272004-06-13 20:20:40 +000051syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010052syn match htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
54" new html 4.0 tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010055syn keyword htmlTagName contained abbr acronym bdo button col colgroup
56syn keyword htmlTagName contained del fieldset iframe ins label legend
Bram Moolenaar071d4272004-06-13 20:20:40 +000057syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
58
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010059" new html 5 tags
Bram Moolenaar690afe12017-01-28 18:34:47 +010060syn keyword htmlTagName contained article aside audio bdi canvas data
Bram Moolenaar5666fcd2019-12-26 14:35:26 +010061syn keyword htmlTagName contained datalist details dialog embed figcaption
62syn keyword htmlTagName contained figure footer header hgroup keygen main
63syn keyword htmlTagName contained mark menuitem meter nav output picture
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010064syn keyword htmlTagName contained progress rb rp rt rtc ruby section
Bram Moolenaarff781552020-03-19 20:37:11 +010065syn keyword htmlTagName contained slot source summary template time track
66syn keyword htmlTagName contained video wbr
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010067
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010068" svg and math tags
69syn keyword htmlMathTagName contained math
70syn keyword htmlSvgTagName contained svg
71
72syn region htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend
73syn region htmlSvg start="<svg>" end="</svg>" contains=@htmlXml transparent keepend
74
75syn cluster xmlTagHook add=htmlMathTagName,htmlSvgTagName
76
Bram Moolenaar071d4272004-06-13 20:20:40 +000077" legal arg names
78syn keyword htmlArg contained action
79syn keyword htmlArg contained align alink alt archive background bgcolor
80syn keyword htmlArg contained border bordercolor cellpadding
81syn keyword htmlArg contained cellspacing checked class clear code codebase color
82syn keyword htmlArg contained cols colspan content coords enctype face
83syn keyword htmlArg contained gutter height hspace id
84syn keyword htmlArg contained link lowsrc marginheight
85syn keyword htmlArg contained marginwidth maxlength method name prompt
86syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
87syn keyword htmlArg contained size src start target text type url
88syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010089syn match htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000090
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +020091" aria attributes
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +010092exe 'syn match htmlArg contained "\<aria-\%(' . join([
93 \ 'activedescendant', 'atomic', 'autocomplete', 'busy', 'checked', 'colcount',
94 \ 'colindex', 'colspan', 'controls', 'current', 'describedby', 'details',
95 \ 'disabled', 'dropeffect', 'errormessage', 'expanded', 'flowto', 'grabbed',
96 \ 'haspopup', 'hidden', 'invalid', 'keyshortcuts', 'label', 'labelledby', 'level',
97 \ 'live', 'modal', 'multiline', 'multiselectable', 'orientation', 'owns',
98 \ 'placeholder', 'posinset', 'pressed', 'readonly', 'relevant', 'required',
99 \ 'roledescription', 'rowcount', 'rowindex', 'rowspan', 'selected', 'setsize',
100 \ 'sort', 'valuemax', 'valuemin', 'valuenow', 'valuetext'
101 \ ], '\|') . '\)\>"'
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +0200102syn keyword htmlArg contained role
103
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104" Netscape extensions
105syn keyword htmlTagName contained frame noframes frameset nobr blink
106syn keyword htmlTagName contained layer ilayer nolayer spacer
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100107syn keyword htmlArg contained frameborder noresize pagex pagey above below
108syn keyword htmlArg contained left top visibility clip id noshade
109syn match htmlArg contained "\<z-index\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000110
111" Microsoft extensions
112syn keyword htmlTagName contained marquee
113
114" html 4.0 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100115syn match htmlArg contained "\<\%(accept-charset\|label\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000116syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
117syn keyword htmlArg contained cite classid codetype compact data datetime
118syn keyword htmlArg contained declare defer dir disabled for frame
119syn keyword htmlArg contained headers hreflang lang language longdesc
120syn keyword htmlArg contained multiple nohref nowrap object profile readonly
121syn keyword htmlArg contained rules scheme scope span standby style
122syn keyword htmlArg contained summary tabindex valuetype version
123
Bram Moolenaar68563932017-01-10 13:31:15 +0100124" html 5 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100125syn keyword htmlArg contained allow autocapitalize as blocking decoding
126syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
127syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
128syn keyword htmlArg contained itemtype loading nomodule ping playsinline
129syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
130syn keyword htmlArg contained autocomplete autofocus autoplay challenge
131syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
132syn keyword htmlArg contained default dirname download draggable dropzone form
133syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
134syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
135syn keyword htmlArg contained kind list loop low max min minlength muted nonce
136syn keyword htmlArg contained novalidate open optimum pattern placeholder
137syn keyword htmlArg contained poster preload radiogroup required reversed
138syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
139syn keyword htmlArg contained step title translate typemustmatch
140syn match htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
Bram Moolenaar68563932017-01-10 13:31:15 +0100141
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142" special characters
143syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
144
145" Comments (the real ones or the old netscape ones)
146if exists("html_wrong_comments")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100147 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148else
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100149 " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100150 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100151 " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
152 " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
153 " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100154 syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100155 " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
156 syn match htmlCommentNested contained "<!-->\@!"
157 syn match htmlCommentError contained "[^><!]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100159syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160
161" server-parsed commands
162syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100163syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000164syn match htmlPreError contained "<!--#\S*"ms=s+4
165syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
166syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
167syn match htmlPreProcAttrError contained "\w\+="he=e-1
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100168syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169
170if !exists("html_no_rendering")
171 " rendering
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000172 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000173
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200174 syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100175 syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200176 syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar01164a62017-11-02 22:58:42 +0100177
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200178 syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
179 syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
180 syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
181 syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
182 syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
183 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
184 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
185 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200187 syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
188 syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
189 syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
190 syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
191 syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
192 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
193 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
194 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
195 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000196
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200197 syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
198 syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
199 syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
200 syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
201 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
202 syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
203 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
204 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200206 syn match htmlLeadingSpace "^\s\+" contained
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200207 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
208 syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
209 syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
210 syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
211 syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
212 syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
213 syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
214 syn region htmlHead start="<head\>" end="</head\_s*>"me=s-1 end="<body\>"me=s-1 end="<h[1-6]\>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
215 syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216endif
217
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100218syn keyword htmlTagName contained noscript
219syn keyword htmlSpecialTagName contained script style
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220if main_syntax != 'java' || exists("java_javascript")
221 " JAVA SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000222 syn include @htmlJavaScript syntax/javascript.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223 unlet b:current_syntax
Bram Moolenaar8feef4f2015-01-07 16:57:10 +0100224 syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100225 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200226 hi def link htmlScriptTag htmlTag
Bram Moolenaar071d4272004-06-13 20:20:40 +0000227
228 " html events (i.e. arguments that include javascript commands)
229 if exists("html_extended_events")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100230 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
231 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232 else
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100233 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
234 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000235 endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100236 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
237 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200238 hi def link htmlEventSQ htmlEvent
239 hi def link htmlEventDQ htmlEvent
Bram Moolenaar071d4272004-06-13 20:20:40 +0000240
241 " a javascript expression is used as an arg value
242 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
243endif
244
245if main_syntax != 'java' || exists("java_vb")
246 " VB SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000247 syn include @htmlVbScript syntax/vb.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000248 unlet b:current_syntax
Bram Moolenaar8feef4f2015-01-07 16:57:10 +0100249 syn region javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000250endif
251
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100252syn cluster htmlJavaScript add=@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253
254if main_syntax != 'java' || exists("java_css")
255 " embedded style sheets
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100256 syn keyword htmlArg contained media
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000257 syn include @htmlCss syntax/css.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000258 unlet b:current_syntax
259 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100260 syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261 syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200262 hi def link htmlStyleArg htmlString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000263endif
264
265if main_syntax == "html"
266 " synchronizing (does not always work if a comment includes legal
267 " html tags, but doing it right would mean to always start
268 " at the first line, which is too slow)
269 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
270 syn sync match htmlHighlight groupthere javaScript "<script"
271 syn sync match htmlHighlightSkip "^.*['\"].*$"
272 syn sync minlines=10
273endif
274
Bram Moolenaard13166e2022-11-18 21:49:57 +0000275" Folding
276" Originally by Ingo Karkat and Marcus Zanona
277if get(g:, "html_syntax_folding", 0)
278 syn region htmlFold start="<\z(\<\%(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|param\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
279 " fold comments (the real ones and the old Netscape ones)
280 if exists("html_wrong_comments")
281 syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
282 endif
283endif
284
Bram Moolenaar071d4272004-06-13 20:20:40 +0000285" The default highlighting.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100286hi def link htmlTag Function
287hi def link htmlEndTag Identifier
288hi def link htmlArg Type
289hi def link htmlTagName htmlStatement
290hi def link htmlSpecialTagName Exception
291hi def link htmlMathTagName htmlTagName
292hi def link htmlSvgTagName htmlTagName
293hi def link htmlValue String
294hi def link htmlSpecialChar Special
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200295
296if !exists("html_no_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100297 hi def link htmlH1 Title
298 hi def link htmlH2 htmlH1
299 hi def link htmlH3 htmlH2
300 hi def link htmlH4 htmlH3
301 hi def link htmlH5 htmlH4
302 hi def link htmlH6 htmlH5
303 hi def link htmlHead PreProc
304 hi def link htmlTitle Title
305 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
306 hi def link htmlUnderlineBold htmlBoldUnderline
307 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
308 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
309 hi def link htmlItalicUnderline htmlUnderlineItalic
310 hi def link htmlItalicBold htmlBoldItalic
311 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
312 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
313 hi def link htmlLink Underlined
314 hi def link htmlLeadingSpace None
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200315 if !exists("html_my_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100316 hi def htmlBold term=bold cterm=bold gui=bold
317 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
318 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200319 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100320 hi def htmlUnderline term=underline cterm=underline gui=underline
321 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
322 hi def htmlItalic term=italic cterm=italic gui=italic
Bram Moolenaar01164a62017-11-02 22:58:42 +0100323 if v:version > 800 || v:version == 800 && has("patch1038")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100324 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
Bram Moolenaar01164a62017-11-02 22:58:42 +0100325 else
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100326 hi def htmlStrike term=underline cterm=underline gui=underline
Bram Moolenaar01164a62017-11-02 22:58:42 +0100327 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000328 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000329endif
330
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100331hi def link htmlPreStmt PreProc
332hi def link htmlPreError Error
333hi def link htmlPreProc PreProc
334hi def link htmlPreAttr String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200335hi def link htmlPreProcAttrName PreProc
336hi def link htmlPreProcAttrError Error
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100337hi def link htmlString String
338hi def link htmlStatement Statement
339hi def link htmlComment Comment
340hi def link htmlCommentNested htmlError
341hi def link htmlCommentError htmlError
342hi def link htmlTagError htmlError
343hi def link htmlEvent javaScript
344hi def link htmlError Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200345
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100346hi def link javaScript Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200347hi def link javaScriptExpression javaScript
348hi def link htmlCssStyleComment Comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100349hi def link htmlCssDefinition Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000350
351let b:current_syntax = "html"
352
353if main_syntax == 'html'
354 unlet main_syntax
355endif
356
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200357let &cpo = s:cpo_save
358unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359" vim: ts=8