blob: c975ae8620034d3eefc21b3b75fe0611a0986cc3 [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>
dkearnsa9058442023-11-29 06:41:41 +11006" Last Change: 2023 Nov 28
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
dkearnsa9058442023-11-29 06:41:41 +11008" See :help html.vim for some comments and a description of the options
Bram Moolenaar071d4272004-06-13 20:20:40 +00009
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
Bram Moolenaar071d4272004-06-13 20:20:40 +000031" tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010032syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
33syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
34syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
35syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
36syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
37syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
38syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
Bram Moolenaar071d4272004-06-13 20:20:40 +000039syn match htmlTagError contained "[^>]<"ms=s+1
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041" tag names
42syn keyword htmlTagName contained address applet area a base basefont
43syn keyword htmlTagName contained big blockquote br caption center
44syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
45syn keyword htmlTagName contained form hr html img
46syn keyword htmlTagName contained input isindex kbd li link map menu
47syn keyword htmlTagName contained meta ol option param pre p samp span
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010048syn keyword htmlTagName contained select small strike sub sup
Bram Moolenaar071d4272004-06-13 20:20:40 +000049syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010050syn match htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
52" new html 4.0 tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010053syn keyword htmlTagName contained abbr acronym bdo button col colgroup
54syn keyword htmlTagName contained del fieldset iframe ins label legend
Bram Moolenaar071d4272004-06-13 20:20:40 +000055syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
56
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010057" new html 5 tags
Bram Moolenaar690afe12017-01-28 18:34:47 +010058syn keyword htmlTagName contained article aside audio bdi canvas data
Bram Moolenaar5666fcd2019-12-26 14:35:26 +010059syn keyword htmlTagName contained datalist details dialog embed figcaption
60syn keyword htmlTagName contained figure footer header hgroup keygen main
61syn keyword htmlTagName contained mark menuitem meter nav output picture
dkearnsa9058442023-11-29 06:41:41 +110062syn keyword htmlTagName contained progress rb rp rt rtc ruby search section
Bram Moolenaarff781552020-03-19 20:37:11 +010063syn keyword htmlTagName contained slot source summary template time track
64syn keyword htmlTagName contained video wbr
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010065
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010066" svg and math tags
67syn keyword htmlMathTagName contained math
68syn keyword htmlSvgTagName contained svg
69
70syn region htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend
71syn region htmlSvg start="<svg>" end="</svg>" contains=@htmlXml transparent keepend
72
73syn cluster xmlTagHook add=htmlMathTagName,htmlSvgTagName
74
Bram Moolenaar071d4272004-06-13 20:20:40 +000075" legal arg names
76syn keyword htmlArg contained action
77syn keyword htmlArg contained align alink alt archive background bgcolor
78syn keyword htmlArg contained border bordercolor cellpadding
79syn keyword htmlArg contained cellspacing checked class clear code codebase color
80syn keyword htmlArg contained cols colspan content coords enctype face
81syn keyword htmlArg contained gutter height hspace id
82syn keyword htmlArg contained link lowsrc marginheight
83syn keyword htmlArg contained marginwidth maxlength method name prompt
84syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
85syn keyword htmlArg contained size src start target text type url
86syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010087syn match htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +020089syn keyword htmlArg contained role
90
dkearnsa9058442023-11-29 06:41:41 +110091" ARIA attributes {{{1
92let s:aria =<< trim END
93 activedescendant
94 atomic
95 autocomplete
96 braillelabel
97 brailleroledescription
98 busy
99 checked
100 colcount
101 colindex
102 colindextext
103 colspan
104 controls
105 current
106 describedby
107 description
108 details
109 disabled
110 errormessage
111 expanded
112 flowto
113 haspopup
114 hidden
115 invalid
116 keyshortcuts
117 label
118 labelledby
119 level
120 live
121 modal
122 multiline
123 multiselectable
124 orientation
125 owns
126 placeholder
127 posinset
128 pressed
129 readonly
130 relevant
131 required
132 roledescription
133 rowcount
134 rowindex
135 rowindextext
136 rowspan
137 selected
138 setsize
139 sort
140 valuemax
141 valuemin
142 valuenow
143 valuetext
144END
145let s:aria_deprecated =<< trim END
146 dropeffect
147 grabbed
148END
149
150call extend(s:aria, s:aria_deprecated)
151exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'
152unlet s:aria s:aria_deprecated
153" }}}
154
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155" Netscape extensions
156syn keyword htmlTagName contained frame noframes frameset nobr blink
157syn keyword htmlTagName contained layer ilayer nolayer spacer
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100158syn keyword htmlArg contained frameborder noresize pagex pagey above below
159syn keyword htmlArg contained left top visibility clip id noshade
160syn match htmlArg contained "\<z-index\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000161
162" Microsoft extensions
163syn keyword htmlTagName contained marquee
164
165" html 4.0 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100166syn match htmlArg contained "\<\%(accept-charset\|label\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
168syn keyword htmlArg contained cite classid codetype compact data datetime
169syn keyword htmlArg contained declare defer dir disabled for frame
170syn keyword htmlArg contained headers hreflang lang language longdesc
171syn keyword htmlArg contained multiple nohref nowrap object profile readonly
172syn keyword htmlArg contained rules scheme scope span standby style
173syn keyword htmlArg contained summary tabindex valuetype version
174
Bram Moolenaar68563932017-01-10 13:31:15 +0100175" html 5 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100176syn keyword htmlArg contained allow autocapitalize as blocking decoding
177syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
178syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
179syn keyword htmlArg contained itemtype loading nomodule ping playsinline
180syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
181syn keyword htmlArg contained autocomplete autofocus autoplay challenge
182syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
183syn keyword htmlArg contained default dirname download draggable dropzone form
184syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
185syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
186syn keyword htmlArg contained kind list loop low max min minlength muted nonce
187syn keyword htmlArg contained novalidate open optimum pattern placeholder
188syn keyword htmlArg contained poster preload radiogroup required reversed
189syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
190syn keyword htmlArg contained step title translate typemustmatch
191syn match htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
Bram Moolenaar68563932017-01-10 13:31:15 +0100192
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193" special characters
194syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
195
196" Comments (the real ones or the old netscape ones)
197if exists("html_wrong_comments")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100198 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199else
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100200 " 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 +0100201 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100202 " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
203 " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
204 " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100205 syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100206 " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
207 syn match htmlCommentNested contained "<!-->\@!"
208 syn match htmlCommentError contained "[^><!]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000209endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100210syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211
212" server-parsed commands
213syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100214syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000215syn match htmlPreError contained "<!--#\S*"ms=s+4
216syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
217syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
218syn match htmlPreProcAttrError contained "\w\+="he=e-1
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100219syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220
221if !exists("html_no_rendering")
222 " rendering
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000223 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200225 syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100226 syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200227 syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar01164a62017-11-02 22:58:42 +0100228
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200229 syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
230 syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
231 syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
232 syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
233 syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
234 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
235 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
236 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200238 syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
239 syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
240 syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
241 syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
242 syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
243 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
244 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
245 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
246 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000247
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200248 syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
249 syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
250 syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
251 syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
252 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
253 syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
254 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
255 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200257 syn match htmlLeadingSpace "^\s\+" contained
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200258 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
259 syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
260 syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
261 syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
262 syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
263 syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
264 syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
265 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
266 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 +0000267endif
268
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100269syn keyword htmlTagName contained noscript
270syn keyword htmlSpecialTagName contained script style
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271if main_syntax != 'java' || exists("java_javascript")
272 " JAVA SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000273 syn include @htmlJavaScript syntax/javascript.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274 unlet b:current_syntax
Bram Moolenaar938ae282023-02-20 20:44:55 +0000275 syn region javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100276 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200277 hi def link htmlScriptTag htmlTag
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278
279 " html events (i.e. arguments that include javascript commands)
280 if exists("html_extended_events")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100281 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
282 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283 else
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100284 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
285 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000286 endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100287 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
288 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200289 hi def link htmlEventSQ htmlEvent
290 hi def link htmlEventDQ htmlEvent
Bram Moolenaar071d4272004-06-13 20:20:40 +0000291
292 " a javascript expression is used as an arg value
293 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
294endif
295
296if main_syntax != 'java' || exists("java_vb")
297 " VB SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000298 syn include @htmlVbScript syntax/vb.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000299 unlet b:current_syntax
Bram Moolenaar8feef4f2015-01-07 16:57:10 +0100300 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 +0000301endif
302
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100303syn cluster htmlJavaScript add=@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000304
305if main_syntax != 'java' || exists("java_css")
306 " embedded style sheets
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100307 syn keyword htmlArg contained media
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000308 syn include @htmlCss syntax/css.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000309 unlet b:current_syntax
310 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100311 syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312 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 +0200313 hi def link htmlStyleArg htmlString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000314endif
315
316if main_syntax == "html"
317 " synchronizing (does not always work if a comment includes legal
318 " html tags, but doing it right would mean to always start
319 " at the first line, which is too slow)
320 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
321 syn sync match htmlHighlight groupthere javaScript "<script"
322 syn sync match htmlHighlightSkip "^.*['\"].*$"
323 syn sync minlines=10
324endif
325
Bram Moolenaard13166e2022-11-18 21:49:57 +0000326" Folding
327" Originally by Ingo Karkat and Marcus Zanona
328if get(g:, "html_syntax_folding", 0)
329 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
330 " fold comments (the real ones and the old Netscape ones)
331 if exists("html_wrong_comments")
332 syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
333 endif
334endif
335
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336" The default highlighting.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100337hi def link htmlTag Function
338hi def link htmlEndTag Identifier
339hi def link htmlArg Type
340hi def link htmlTagName htmlStatement
341hi def link htmlSpecialTagName Exception
342hi def link htmlMathTagName htmlTagName
343hi def link htmlSvgTagName htmlTagName
344hi def link htmlValue String
345hi def link htmlSpecialChar Special
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200346
347if !exists("html_no_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100348 hi def link htmlH1 Title
349 hi def link htmlH2 htmlH1
350 hi def link htmlH3 htmlH2
351 hi def link htmlH4 htmlH3
352 hi def link htmlH5 htmlH4
353 hi def link htmlH6 htmlH5
354 hi def link htmlHead PreProc
355 hi def link htmlTitle Title
356 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
357 hi def link htmlUnderlineBold htmlBoldUnderline
358 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
359 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
360 hi def link htmlItalicUnderline htmlUnderlineItalic
361 hi def link htmlItalicBold htmlBoldItalic
362 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
363 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
364 hi def link htmlLink Underlined
365 hi def link htmlLeadingSpace None
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200366 if !exists("html_my_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100367 hi def htmlBold term=bold cterm=bold gui=bold
368 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
369 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200370 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100371 hi def htmlUnderline term=underline cterm=underline gui=underline
372 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
373 hi def htmlItalic term=italic cterm=italic gui=italic
Bram Moolenaar01164a62017-11-02 22:58:42 +0100374 if v:version > 800 || v:version == 800 && has("patch1038")
dkearnsa9058442023-11-29 06:41:41 +1100375 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
Bram Moolenaar01164a62017-11-02 22:58:42 +0100376 else
dkearnsa9058442023-11-29 06:41:41 +1100377 hi def htmlStrike term=underline cterm=underline gui=underline
Bram Moolenaar01164a62017-11-02 22:58:42 +0100378 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000379 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380endif
381
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100382hi def link htmlPreStmt PreProc
383hi def link htmlPreError Error
384hi def link htmlPreProc PreProc
385hi def link htmlPreAttr String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200386hi def link htmlPreProcAttrName PreProc
387hi def link htmlPreProcAttrError Error
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100388hi def link htmlString String
389hi def link htmlStatement Statement
390hi def link htmlComment Comment
391hi def link htmlCommentNested htmlError
392hi def link htmlCommentError htmlError
393hi def link htmlTagError htmlError
394hi def link htmlEvent javaScript
395hi def link htmlError Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200396
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100397hi def link javaScript Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200398hi def link javaScriptExpression javaScript
399hi def link htmlCssStyleComment Comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100400hi def link htmlCssDefinition Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000401
402let b:current_syntax = "html"
403
404if main_syntax == 'html'
405 unlet main_syntax
406endif
407
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200408let &cpo = s:cpo_save
409unlet s:cpo_save
dkearnsa9058442023-11-29 06:41:41 +1100410
411" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: