blob: 0e615b70feb69764e724849c05f8803e2efd57db [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
Aliaksei Budaveidc7ed8f2025-05-10 21:40:41 +02008" 2025 May 10 by Vim Project: update comment
Bram Moolenaar071d4272004-06-13 20:20:40 +00009
dkearnsa9058442023-11-29 06:41:41 +110010" See :help html.vim for some comments and a description of the options
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020012" quit when a syntax file was already loaded
Bram Moolenaar071d4272004-06-13 20:20:40 +000013if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020014 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000015 finish
16 endif
17 let main_syntax = 'html'
18endif
19
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020020let s:cpo_save = &cpo
21set cpo&vim
22
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000023syntax spell toplevel
Bram Moolenaar071d4272004-06-13 20:20:40 +000024
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010025syn include @htmlXml syntax/xml.vim
26unlet b:current_syntax
27
Bram Moolenaar071d4272004-06-13 20:20:40 +000028syn case ignore
29
30" mark illegal characters
31syn match htmlError "[<>&]"
32
Bram Moolenaar071d4272004-06-13 20:20:40 +000033" tags
Bram Moolenaarb529cfb2022-07-25 15:42:07 +010034syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
35syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
36syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
37syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
38syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
39syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
40syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
Bram Moolenaar071d4272004-06-13 20:20:40 +000041syn match htmlTagError contained "[^>]<"ms=s+1
42
Bram Moolenaar071d4272004-06-13 20:20:40 +000043" 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
dkearnsa9058442023-11-29 06:41:41 +110064syn keyword htmlTagName contained progress rb rp rt rtc ruby search 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 +020091syn keyword htmlArg contained role
92
dkearnsa9058442023-11-29 06:41:41 +110093" ARIA attributes {{{1
94let s:aria =<< trim END
95 activedescendant
96 atomic
97 autocomplete
98 braillelabel
99 brailleroledescription
100 busy
101 checked
102 colcount
103 colindex
104 colindextext
105 colspan
106 controls
107 current
108 describedby
109 description
110 details
111 disabled
112 errormessage
113 expanded
114 flowto
115 haspopup
116 hidden
117 invalid
118 keyshortcuts
119 label
120 labelledby
121 level
122 live
123 modal
124 multiline
125 multiselectable
126 orientation
127 owns
128 placeholder
129 posinset
130 pressed
131 readonly
132 relevant
133 required
134 roledescription
135 rowcount
136 rowindex
137 rowindextext
138 rowspan
139 selected
140 setsize
141 sort
142 valuemax
143 valuemin
144 valuenow
145 valuetext
146END
147let s:aria_deprecated =<< trim END
148 dropeffect
149 grabbed
150END
151
152call extend(s:aria, s:aria_deprecated)
153exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'
154unlet s:aria s:aria_deprecated
155" }}}
156
Bram Moolenaar071d4272004-06-13 20:20:40 +0000157" Netscape extensions
158syn keyword htmlTagName contained frame noframes frameset nobr blink
159syn keyword htmlTagName contained layer ilayer nolayer spacer
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100160syn keyword htmlArg contained frameborder noresize pagex pagey above below
161syn keyword htmlArg contained left top visibility clip id noshade
162syn match htmlArg contained "\<z-index\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163
164" Microsoft extensions
165syn keyword htmlTagName contained marquee
166
167" html 4.0 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100168syn match htmlArg contained "\<\%(accept-charset\|label\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
170syn keyword htmlArg contained cite classid codetype compact data datetime
171syn keyword htmlArg contained declare defer dir disabled for frame
172syn keyword htmlArg contained headers hreflang lang language longdesc
173syn keyword htmlArg contained multiple nohref nowrap object profile readonly
174syn keyword htmlArg contained rules scheme scope span standby style
175syn keyword htmlArg contained summary tabindex valuetype version
176
Bram Moolenaar68563932017-01-10 13:31:15 +0100177" html 5 arg names
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100178syn keyword htmlArg contained allow autocapitalize as blocking decoding
179syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
180syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
181syn keyword htmlArg contained itemtype loading nomodule ping playsinline
182syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
183syn keyword htmlArg contained autocomplete autofocus autoplay challenge
184syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
185syn keyword htmlArg contained default dirname download draggable dropzone form
186syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
187syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
188syn keyword htmlArg contained kind list loop low max min minlength muted nonce
189syn keyword htmlArg contained novalidate open optimum pattern placeholder
190syn keyword htmlArg contained poster preload radiogroup required reversed
191syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
192syn keyword htmlArg contained step title translate typemustmatch
193syn match htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
Bram Moolenaar68563932017-01-10 13:31:15 +0100194
Bram Moolenaar071d4272004-06-13 20:20:40 +0000195" special characters
Mohamed Akram917ff8a2024-06-16 18:47:36 +0400196syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,32};"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000197
198" Comments (the real ones or the old netscape ones)
199if exists("html_wrong_comments")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100200 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000201else
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100202 " 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 +0100203 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100204 " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
205 " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
206 " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100207 syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100208 " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
209 syn match htmlCommentNested contained "<!-->\@!"
210 syn match htmlCommentError contained "[^><!]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100212syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213
214" server-parsed commands
215syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100216syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217syn match htmlPreError contained "<!--#\S*"ms=s+4
218syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
219syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
220syn match htmlPreProcAttrError contained "\w\+="he=e-1
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100221syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222
223if !exists("html_no_rendering")
224 " rendering
Bram Moolenaarce0842a2005-07-18 21:58:11 +0000225 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000226
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200227 syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100228 syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200229 syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar01164a62017-11-02 22:58:42 +0100230
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200231 syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
232 syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
233 syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
234 syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
235 syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
236 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
237 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
238 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
Bram Moolenaar071d4272004-06-13 20:20:40 +0000239
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200240 syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
241 syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
242 syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
243 syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
244 syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
245 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
246 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
247 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
248 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000249
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200250 syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
251 syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
252 syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
253 syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
254 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
255 syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
256 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
257 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000258
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200259 syn match htmlLeadingSpace "^\s\+" contained
Bram Moolenaar62e1bb42019-04-08 16:25:07 +0200260 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
261 syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
262 syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
263 syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
264 syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
265 syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
266 syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
267 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
268 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 +0000269endif
270
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100271syn keyword htmlTagName contained noscript
272syn keyword htmlSpecialTagName contained script style
Bram Moolenaar071d4272004-06-13 20:20:40 +0000273if main_syntax != 'java' || exists("java_javascript")
274 " JAVA SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000275 syn include @htmlJavaScript syntax/javascript.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000276 unlet b:current_syntax
Bram Moolenaar938ae282023-02-20 20:44:55 +0000277 syn region javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100278 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200279 hi def link htmlScriptTag htmlTag
Bram Moolenaar071d4272004-06-13 20:20:40 +0000280
281 " html events (i.e. arguments that include javascript commands)
282 if exists("html_extended_events")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100283 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
284 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000285 else
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100286 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
287 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288 endif
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100289 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
290 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200291 hi def link htmlEventSQ htmlEvent
292 hi def link htmlEventDQ htmlEvent
Bram Moolenaar071d4272004-06-13 20:20:40 +0000293
294 " a javascript expression is used as an arg value
295 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
296endif
297
298if main_syntax != 'java' || exists("java_vb")
299 " VB SCRIPT
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000300 syn include @htmlVbScript syntax/vb.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301 unlet b:current_syntax
Bram Moolenaar8feef4f2015-01-07 16:57:10 +0100302 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 +0000303endif
304
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100305syn cluster htmlJavaScript add=@htmlPreproc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000306
307if main_syntax != 'java' || exists("java_css")
308 " embedded style sheets
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100309 syn keyword htmlArg contained media
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +0000310 syn include @htmlCss syntax/css.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311 unlet b:current_syntax
312 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100313 syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000314 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 +0200315 hi def link htmlStyleArg htmlString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000316endif
317
318if main_syntax == "html"
319 " synchronizing (does not always work if a comment includes legal
320 " html tags, but doing it right would mean to always start
321 " at the first line, which is too slow)
322 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
323 syn sync match htmlHighlight groupthere javaScript "<script"
324 syn sync match htmlHighlightSkip "^.*['\"].*$"
Christian Brabandtdf9f67e2024-07-30 20:19:15 +0200325 exe "syn sync minlines=" . get(g:, 'html_minlines', 250)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326endif
327
Bram Moolenaard13166e2022-11-18 21:49:57 +0000328" Folding
Aliaksei Budaveidc7ed8f2025-05-10 21:40:41 +0200329" (Originally written by Ingo Karkat and Marcus Zanona; see
330" https://vi.stackexchange.com/questions/2306/html-syntax-folding-in-vim .)
Bram Moolenaard13166e2022-11-18 21:49:57 +0000331if get(g:, "html_syntax_folding", 0)
332 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
333 " fold comments (the real ones and the old Netscape ones)
334 if exists("html_wrong_comments")
335 syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
336 endif
337endif
338
Bram Moolenaar071d4272004-06-13 20:20:40 +0000339" The default highlighting.
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100340hi def link htmlTag Function
341hi def link htmlEndTag Identifier
342hi def link htmlArg Type
343hi def link htmlTagName htmlStatement
344hi def link htmlSpecialTagName Exception
345hi def link htmlMathTagName htmlTagName
346hi def link htmlSvgTagName htmlTagName
347hi def link htmlValue String
348hi def link htmlSpecialChar Special
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200349
350if !exists("html_no_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100351 hi def link htmlH1 Title
352 hi def link htmlH2 htmlH1
353 hi def link htmlH3 htmlH2
354 hi def link htmlH4 htmlH3
355 hi def link htmlH5 htmlH4
356 hi def link htmlH6 htmlH5
357 hi def link htmlHead PreProc
358 hi def link htmlTitle Title
359 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
360 hi def link htmlUnderlineBold htmlBoldUnderline
361 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
362 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
363 hi def link htmlItalicUnderline htmlUnderlineItalic
364 hi def link htmlItalicBold htmlBoldItalic
365 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
366 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
367 hi def link htmlLink Underlined
368 hi def link htmlLeadingSpace None
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200369 if !exists("html_my_rendering")
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100370 hi def htmlBold term=bold cterm=bold gui=bold
371 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
372 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200373 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100374 hi def htmlUnderline term=underline cterm=underline gui=underline
375 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
376 hi def htmlItalic term=italic cterm=italic gui=italic
Bram Moolenaar01164a62017-11-02 22:58:42 +0100377 if v:version > 800 || v:version == 800 && has("patch1038")
dkearnsa9058442023-11-29 06:41:41 +1100378 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
Bram Moolenaar01164a62017-11-02 22:58:42 +0100379 else
dkearnsa9058442023-11-29 06:41:41 +1100380 hi def htmlStrike term=underline cterm=underline gui=underline
Bram Moolenaar01164a62017-11-02 22:58:42 +0100381 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000382 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000383endif
384
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100385hi def link htmlPreStmt PreProc
386hi def link htmlPreError Error
387hi def link htmlPreProc PreProc
388hi def link htmlPreAttr String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200389hi def link htmlPreProcAttrName PreProc
390hi def link htmlPreProcAttrError Error
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100391hi def link htmlString String
392hi def link htmlStatement Statement
393hi def link htmlComment Comment
394hi def link htmlCommentNested htmlError
395hi def link htmlCommentError htmlError
396hi def link htmlTagError htmlError
397hi def link htmlEvent javaScript
398hi def link htmlError Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200399
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100400hi def link javaScript Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200401hi def link javaScriptExpression javaScript
402hi def link htmlCssStyleComment Comment
Bram Moolenaarb529cfb2022-07-25 15:42:07 +0100403hi def link htmlCssDefinition Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000404
405let b:current_syntax = "html"
406
407if main_syntax == 'html'
408 unlet main_syntax
409endif
410
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200411let &cpo = s:cpo_save
412unlet s:cpo_save
dkearnsa9058442023-11-29 06:41:41 +1100413
414" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: