blob: ca7c7f1cddaa955c68e2751e7b2ceaf062b6aaf1 [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
Christian Brabandtdf9f67e2024-07-30 20:19:15 +02007" 2024 Jul 30 by Vim Project: increase syn-sync-minlines to 250
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
dkearnsa9058442023-11-29 06:41:41 +11009" See :help html.vim for some comments and a description of the options
Bram Moolenaar071d4272004-06-13 20:20:40 +000010
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020011" quit when a syntax file was already loaded
Bram Moolenaar071d4272004-06-13 20:20:40 +000012if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020013 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000014 finish
15 endif
16 let main_syntax = 'html'
17endif
18
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020019let s:cpo_save = &cpo
20set cpo&vim
21
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000022syntax spell toplevel
Bram Moolenaar071d4272004-06-13 20:20:40 +000023
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010024syn include @htmlXml syntax/xml.vim
25unlet b:current_syntax
26
Bram Moolenaar071d4272004-06-13 20:20:40 +000027syn case ignore
28
29" mark illegal characters
30syn match htmlError "[<>&]"
31
Bram Moolenaar071d4272004-06-13 20:20:40 +000032" 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000042" tag names
43syn keyword htmlTagName contained address applet area a base basefont
44syn keyword htmlTagName contained big blockquote br caption center
45syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
46syn keyword htmlTagName contained form hr html img
47syn keyword htmlTagName contained input isindex kbd li link map menu
48syn keyword htmlTagName contained meta ol option param pre p samp span
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010049syn keyword htmlTagName contained select small strike sub sup
Bram Moolenaar071d4272004-06-13 20:20:40 +000050syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010051syn match htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
53" new html 4.0 tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010054syn keyword htmlTagName contained abbr acronym bdo button col colgroup
55syn keyword htmlTagName contained del fieldset iframe ins label legend
Bram Moolenaar071d4272004-06-13 20:20:40 +000056syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
57
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010058" new html 5 tags
Bram Moolenaar690afe12017-01-28 18:34:47 +010059syn keyword htmlTagName contained article aside audio bdi canvas data
Bram Moolenaar5666fcd2019-12-26 14:35:26 +010060syn keyword htmlTagName contained datalist details dialog embed figcaption
61syn keyword htmlTagName contained figure footer header hgroup keygen main
62syn keyword htmlTagName contained mark menuitem meter nav output picture
dkearnsa9058442023-11-29 06:41:41 +110063syn keyword htmlTagName contained progress rb rp rt rtc ruby search section
Bram Moolenaarff781552020-03-19 20:37:11 +010064syn keyword htmlTagName contained slot source summary template time track
65syn keyword htmlTagName contained video wbr
Bram Moolenaarbc2eada2017-01-02 21:27:47 +010066
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010067" svg and math tags
68syn keyword htmlMathTagName contained math
69syn keyword htmlSvgTagName contained svg
70
71syn region htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend
72syn region htmlSvg start="<svg>" end="</svg>" contains=@htmlXml transparent keepend
73
74syn cluster xmlTagHook add=htmlMathTagName,htmlSvgTagName
75
Bram Moolenaar071d4272004-06-13 20:20:40 +000076" legal arg names
77syn keyword htmlArg contained action
78syn keyword htmlArg contained align alink alt archive background bgcolor
79syn keyword htmlArg contained border bordercolor cellpadding
80syn keyword htmlArg contained cellspacing checked class clear code codebase color
81syn keyword htmlArg contained cols colspan content coords enctype face
82syn keyword htmlArg contained gutter height hspace id
83syn keyword htmlArg contained link lowsrc marginheight
84syn keyword htmlArg contained marginwidth maxlength method name prompt
85syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
86syn keyword htmlArg contained size src start target text type url
87syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010088syn match htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000089
Bram Moolenaard2f3a8b2018-06-19 14:35:59 +020090syn keyword htmlArg contained role
91
dkearnsa9058442023-11-29 06:41:41 +110092" ARIA attributes {{{1
93let s:aria =<< trim END
94 activedescendant
95 atomic
96 autocomplete
97 braillelabel
98 brailleroledescription
99 busy
100 checked
101 colcount
102 colindex
103 colindextext
104 colspan
105 controls
106 current
107 describedby
108 description
109 details
110 disabled
111 errormessage
112 expanded
113 flowto
114 haspopup
115 hidden
116 invalid
117 keyshortcuts
118 label
119 labelledby
120 level
121 live
122 modal
123 multiline
124 multiselectable
125 orientation
126 owns
127 placeholder
128 posinset
129 pressed
130 readonly
131 relevant
132 required
133 roledescription
134 rowcount
135 rowindex
136 rowindextext
137 rowspan
138 selected
139 setsize
140 sort
141 valuemax
142 valuemin
143 valuenow
144 valuetext
145END
146let s:aria_deprecated =<< trim END
147 dropeffect
148 grabbed
149END
150
151call extend(s:aria, s:aria_deprecated)
152exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'
153unlet s:aria s:aria_deprecated
154" }}}
155
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156" Netscape extensions
157syn keyword htmlTagName contained frame noframes frameset nobr blink
158syn keyword htmlTagName contained layer ilayer nolayer spacer
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100159syn keyword htmlArg contained frameborder noresize pagex pagey above below
160syn keyword htmlArg contained left top visibility clip id noshade
161syn match htmlArg contained "\<z-index\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000162
163" Microsoft extensions
164syn keyword htmlTagName contained marquee
165
166" html 4.0 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100167syn match htmlArg contained "\<\%(accept-charset\|label\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000168syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
169syn keyword htmlArg contained cite classid codetype compact data datetime
170syn keyword htmlArg contained declare defer dir disabled for frame
171syn keyword htmlArg contained headers hreflang lang language longdesc
172syn keyword htmlArg contained multiple nohref nowrap object profile readonly
173syn keyword htmlArg contained rules scheme scope span standby style
174syn keyword htmlArg contained summary tabindex valuetype version
175
Bram Moolenaar68563932017-01-10 13:31:15 +0100176" html 5 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100177syn keyword htmlArg contained allow autocapitalize as blocking decoding
178syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
179syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
180syn keyword htmlArg contained itemtype loading nomodule ping playsinline
181syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
182syn keyword htmlArg contained autocomplete autofocus autoplay challenge
183syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
184syn keyword htmlArg contained default dirname download draggable dropzone form
185syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
186syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
187syn keyword htmlArg contained kind list loop low max min minlength muted nonce
188syn keyword htmlArg contained novalidate open optimum pattern placeholder
189syn keyword htmlArg contained poster preload radiogroup required reversed
190syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
191syn keyword htmlArg contained step title translate typemustmatch
192syn match htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
Bram Moolenaar68563932017-01-10 13:31:15 +0100193
Bram Moolenaar071d4272004-06-13 20:20:40 +0000194" special characters
Mohamed Akram917ff8a2024-06-16 18:47:36 +0400195syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,32};"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000196
197" Comments (the real ones or the old netscape ones)
198if exists("html_wrong_comments")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100199 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000200else
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100201 " 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 +0100202 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100203 " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
204 " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
205 " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100206 syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100207 " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
208 syn match htmlCommentNested contained "<!-->\@!"
209 syn match htmlCommentError contained "[^><!]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100211syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000212
213" server-parsed commands
214syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100215syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216syn match htmlPreError contained "<!--#\S*"ms=s+4
217syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
218syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
219syn match htmlPreProcAttrError contained "\w\+="he=e-1
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100220syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000221
222if !exists("html_no_rendering")
223 " rendering
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000224 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200226 syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100227 syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200228 syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar01164a62017-11-02 22:58:42 +0100229
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200230 syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
231 syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
232 syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
233 syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
234 syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
235 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
236 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
237 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
Bram Moolenaar071d4272004-06-13 20:20:40 +0000238
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200239 syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
240 syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
241 syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
242 syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
243 syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
244 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
245 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
246 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
247 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000248
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200249 syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
250 syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
251 syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
252 syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
253 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
254 syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
255 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
256 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000257
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200258 syn match htmlLeadingSpace "^\s\+" contained
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200259 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
260 syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
261 syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
262 syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
263 syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
264 syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
265 syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
266 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
267 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 +0000268endif
269
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100270syn keyword htmlTagName contained noscript
271syn keyword htmlSpecialTagName contained script style
Bram Moolenaar071d4272004-06-13 20:20:40 +0000272if main_syntax != 'java' || exists("java_javascript")
273 " JAVA SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000274 syn include @htmlJavaScript syntax/javascript.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000275 unlet b:current_syntax
Bram Moolenaar938ae282023-02-20 20:44:55 +0000276 syn region javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100277 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200278 hi def link htmlScriptTag htmlTag
Bram Moolenaar071d4272004-06-13 20:20:40 +0000279
280 " html events (i.e. arguments that include javascript commands)
281 if exists("html_extended_events")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100282 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
283 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284 else
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100285 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
286 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000287 endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100288 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
289 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200290 hi def link htmlEventSQ htmlEvent
291 hi def link htmlEventDQ htmlEvent
Bram Moolenaar071d4272004-06-13 20:20:40 +0000292
293 " a javascript expression is used as an arg value
294 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
295endif
296
297if main_syntax != 'java' || exists("java_vb")
298 " VB SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000299 syn include @htmlVbScript syntax/vb.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000300 unlet b:current_syntax
Bram Moolenaar8feef4f2015-01-07 16:57:10 +0100301 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 +0000302endif
303
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100304syn cluster htmlJavaScript add=@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000305
306if main_syntax != 'java' || exists("java_css")
307 " embedded style sheets
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100308 syn keyword htmlArg contained media
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000309 syn include @htmlCss syntax/css.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000310 unlet b:current_syntax
311 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100312 syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 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 +0200314 hi def link htmlStyleArg htmlString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315endif
316
317if main_syntax == "html"
318 " synchronizing (does not always work if a comment includes legal
319 " html tags, but doing it right would mean to always start
320 " at the first line, which is too slow)
321 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
322 syn sync match htmlHighlight groupthere javaScript "<script"
323 syn sync match htmlHighlightSkip "^.*['\"].*$"
Christian Brabandtdf9f67e2024-07-30 20:19:15 +0200324 exe "syn sync minlines=" . get(g:, 'html_minlines', 250)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000325endif
326
Bram Moolenaard13166e2022-11-18 21:49:57 +0000327" Folding
328" Originally by Ingo Karkat and Marcus Zanona
329if get(g:, "html_syntax_folding", 0)
330 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
331 " fold comments (the real ones and the old Netscape ones)
332 if exists("html_wrong_comments")
333 syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
334 endif
335endif
336
Bram Moolenaar071d4272004-06-13 20:20:40 +0000337" The default highlighting.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100338hi def link htmlTag Function
339hi def link htmlEndTag Identifier
340hi def link htmlArg Type
341hi def link htmlTagName htmlStatement
342hi def link htmlSpecialTagName Exception
343hi def link htmlMathTagName htmlTagName
344hi def link htmlSvgTagName htmlTagName
345hi def link htmlValue String
346hi def link htmlSpecialChar Special
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200347
348if !exists("html_no_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100349 hi def link htmlH1 Title
350 hi def link htmlH2 htmlH1
351 hi def link htmlH3 htmlH2
352 hi def link htmlH4 htmlH3
353 hi def link htmlH5 htmlH4
354 hi def link htmlH6 htmlH5
355 hi def link htmlHead PreProc
356 hi def link htmlTitle Title
357 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
358 hi def link htmlUnderlineBold htmlBoldUnderline
359 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
360 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
361 hi def link htmlItalicUnderline htmlUnderlineItalic
362 hi def link htmlItalicBold htmlBoldItalic
363 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
364 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
365 hi def link htmlLink Underlined
366 hi def link htmlLeadingSpace None
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200367 if !exists("html_my_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100368 hi def htmlBold term=bold cterm=bold gui=bold
369 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
370 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200371 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100372 hi def htmlUnderline term=underline cterm=underline gui=underline
373 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
374 hi def htmlItalic term=italic cterm=italic gui=italic
Bram Moolenaar01164a62017-11-02 22:58:42 +0100375 if v:version > 800 || v:version == 800 && has("patch1038")
dkearnsa9058442023-11-29 06:41:41 +1100376 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
Bram Moolenaar01164a62017-11-02 22:58:42 +0100377 else
dkearnsa9058442023-11-29 06:41:41 +1100378 hi def htmlStrike term=underline cterm=underline gui=underline
Bram Moolenaar01164a62017-11-02 22:58:42 +0100379 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000381endif
382
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100383hi def link htmlPreStmt PreProc
384hi def link htmlPreError Error
385hi def link htmlPreProc PreProc
386hi def link htmlPreAttr String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200387hi def link htmlPreProcAttrName PreProc
388hi def link htmlPreProcAttrError Error
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100389hi def link htmlString String
390hi def link htmlStatement Statement
391hi def link htmlComment Comment
392hi def link htmlCommentNested htmlError
393hi def link htmlCommentError htmlError
394hi def link htmlTagError htmlError
395hi def link htmlEvent javaScript
396hi def link htmlError Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200397
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100398hi def link javaScript Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200399hi def link javaScriptExpression javaScript
400hi def link htmlCssStyleComment Comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100401hi def link htmlCssDefinition Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000402
403let b:current_syntax = "html"
404
405if main_syntax == 'html'
406 unlet main_syntax
407endif
408
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200409let &cpo = s:cpo_save
410unlet s:cpo_save
dkearnsa9058442023-11-29 06:41:41 +1100411
412" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: