xref: /vim-8.2.3635/runtime/syntax/html.vim (revision 9faec4e3)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:             HTML
3*9faec4e3SBram Moolenaar" Previous Maintainer:  Jorge Maldonado Ventura <[email protected]>
4bc2eada5SBram Moolenaar" Previous Maintainer:  Claudio Fleiner <[email protected]>
568563937SBram Moolenaar" Repository:           https://notabug.org/jorgesumle/vim-html-syntax
6*9faec4e3SBram Moolenaar" Last Change:          2021 Feb 25
7*9faec4e3SBram Moolenaar"			Included patch #7900 to fix comments
801164a65SBram Moolenaar"
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" Please check :help html.vim for some comments and a description of the options
11071d4279SBram Moolenaar
1289bcfda6SBram Moolenaar" quit when a syntax file was already loaded
13071d4279SBram Moolenaarif !exists("main_syntax")
1489bcfda6SBram Moolenaar  if exists("b:current_syntax")
15071d4279SBram Moolenaar    finish
16071d4279SBram Moolenaar  endif
17071d4279SBram Moolenaar  let main_syntax = 'html'
18071d4279SBram Moolenaarendif
19071d4279SBram Moolenaar
200c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo
210c5fa7d7SBram Moolenaarset cpo&vim
220c5fa7d7SBram Moolenaar
23c81e5e79SBram Moolenaarsyntax spell toplevel
24071d4279SBram Moolenaar
25071d4279SBram Moolenaarsyn case ignore
26071d4279SBram Moolenaar
27071d4279SBram Moolenaar" mark illegal characters
28071d4279SBram Moolenaarsyn match htmlError "[<>&]"
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar
31071d4279SBram Moolenaar" tags
32071d4279SBram Moolenaarsyn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
33071d4279SBram Moolenaarsyn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
34071d4279SBram Moolenaarsyn match   htmlValue    contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc
35ce0842a6SBram Moolenaarsyn region  htmlEndTag             start=+</+      end=+>+ contains=htmlTagN,htmlTagError
360c5fa7d7SBram Moolenaarsyn region  htmlTag                start=+<[^/]+   end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
37071d4279SBram Moolenaarsyn match   htmlTagN     contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
38071d4279SBram Moolenaarsyn match   htmlTagN     contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
39071d4279SBram Moolenaarsyn match   htmlTagError contained "[^>]<"ms=s+1
40071d4279SBram Moolenaar
41071d4279SBram Moolenaar
42071d4279SBram Moolenaar" tag names
43071d4279SBram Moolenaarsyn keyword htmlTagName contained address applet area a base basefont
44071d4279SBram Moolenaarsyn keyword htmlTagName contained big blockquote br caption center
45071d4279SBram Moolenaarsyn keyword htmlTagName contained cite code dd dfn dir div dl dt font
46071d4279SBram Moolenaarsyn keyword htmlTagName contained form hr html img
47071d4279SBram Moolenaarsyn keyword htmlTagName contained input isindex kbd li link map menu
48071d4279SBram Moolenaarsyn keyword htmlTagName contained meta ol option param pre p samp span
4901164a65SBram Moolenaarsyn keyword htmlTagName contained select small sub sup
50071d4279SBram Moolenaarsyn keyword htmlTagName contained table td textarea th tr tt ul var xmp
51071d4279SBram Moolenaarsyn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
52071d4279SBram Moolenaar
53071d4279SBram Moolenaar" new html 4.0 tags
54071d4279SBram Moolenaarsyn keyword htmlTagName contained abbr acronym bdo button col label
5501164a65SBram Moolenaarsyn keyword htmlTagName contained colgroup fieldset iframe ins legend
56071d4279SBram Moolenaarsyn keyword htmlTagName contained object optgroup q s tbody tfoot thead
57071d4279SBram Moolenaar
58bc2eada5SBram Moolenaar" new html 5 tags
59690afe1fSBram Moolenaarsyn keyword htmlTagName contained article aside audio bdi canvas data
605666fcd0SBram Moolenaarsyn keyword htmlTagName contained datalist details dialog embed figcaption
615666fcd0SBram Moolenaarsyn keyword htmlTagName contained figure footer header hgroup keygen main
625666fcd0SBram Moolenaarsyn keyword htmlTagName contained mark menuitem meter nav output picture
63bc2eada5SBram Moolenaarsyn keyword htmlTagName contained progress rb rp rt rtc ruby section
64ff78155aSBram Moolenaarsyn keyword htmlTagName contained slot source summary template time track
65ff78155aSBram Moolenaarsyn keyword htmlTagName contained video wbr
66bc2eada5SBram Moolenaar
67071d4279SBram Moolenaar" legal arg names
68071d4279SBram Moolenaarsyn keyword htmlArg contained action
69071d4279SBram Moolenaarsyn keyword htmlArg contained align alink alt archive background bgcolor
70071d4279SBram Moolenaarsyn keyword htmlArg contained border bordercolor cellpadding
71071d4279SBram Moolenaarsyn keyword htmlArg contained cellspacing checked class clear code codebase color
72071d4279SBram Moolenaarsyn keyword htmlArg contained cols colspan content coords enctype face
73071d4279SBram Moolenaarsyn keyword htmlArg contained gutter height hspace id
74071d4279SBram Moolenaarsyn keyword htmlArg contained link lowsrc marginheight
75071d4279SBram Moolenaarsyn keyword htmlArg contained marginwidth maxlength method name prompt
76071d4279SBram Moolenaarsyn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
77071d4279SBram Moolenaarsyn keyword htmlArg contained size src start target text type url
78071d4279SBram Moolenaarsyn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
79071d4279SBram Moolenaarsyn match   htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
80071d4279SBram Moolenaar
81d2f3a8b8SBram Moolenaar" aria attributes
82d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-activedescendant\|aria-atomic\)\>"
83d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-autocomplete\|aria-busy\|aria-checked\)\>"
84d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-colcount\|aria-colindex\|aria-colspan\)\>"
85d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-controls\|aria-current\)\>"
86d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-describedby\|aria-details\)\>"
87d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-disabled\|aria-dropeffect\)\>"
88d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-errormessage\|aria-expanded\)\>"
89d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-flowto\|aria-grabbed\|aria-haspopup\)\>"
90d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-hidden\|aria-invalid\)\>"
91d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-keyshortcuts\|aria-label\)\>"
92d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-labelledby\|aria-level\|aria-live\)\>"
93d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-modal\|aria-multiline\)\>"
94d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-multiselectable\|aria-orientation\)\>"
95d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-owns\|aria-placeholder\|aria-posinset\)\>"
96d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-pressed\|aria-readonly\|aria-relevant\)\>"
97d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-required\|aria-roledescription\)\>"
98d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-rowcount\|aria-rowindex\|aria-rowspan\)\>"
99d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-selected\|aria-setsize\|aria-sort\)\>"
100d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-valuemax\|aria-valuemin\)\>"
101d2f3a8b8SBram Moolenaarsyn match htmlArg contained "\<\(aria-valuenow\|aria-valuetext\)\>"
102d2f3a8b8SBram Moolenaarsyn keyword htmlArg contained role
103d2f3a8b8SBram Moolenaar
104071d4279SBram Moolenaar" Netscape extensions
105071d4279SBram Moolenaarsyn keyword htmlTagName contained frame noframes frameset nobr blink
106071d4279SBram Moolenaarsyn keyword htmlTagName contained layer ilayer nolayer spacer
107071d4279SBram Moolenaarsyn keyword htmlArg     contained frameborder noresize pagex pagey above below
108071d4279SBram Moolenaarsyn keyword htmlArg     contained left top visibility clip id noshade
109071d4279SBram Moolenaarsyn match   htmlArg     contained "\<z-index\>"
110071d4279SBram Moolenaar
111071d4279SBram Moolenaar" Microsoft extensions
112071d4279SBram Moolenaarsyn keyword htmlTagName contained marquee
113071d4279SBram Moolenaar
114071d4279SBram Moolenaar" html 4.0 arg names
115071d4279SBram Moolenaarsyn match   htmlArg contained "\<\(accept-charset\|label\)\>"
116071d4279SBram Moolenaarsyn keyword htmlArg contained abbr accept accesskey axis char charoff charset
117071d4279SBram Moolenaarsyn keyword htmlArg contained cite classid codetype compact data datetime
118071d4279SBram Moolenaarsyn keyword htmlArg contained declare defer dir disabled for frame
119071d4279SBram Moolenaarsyn keyword htmlArg contained headers hreflang lang language longdesc
120071d4279SBram Moolenaarsyn keyword htmlArg contained multiple nohref nowrap object profile readonly
121071d4279SBram Moolenaarsyn keyword htmlArg contained rules scheme scope span standby style
122071d4279SBram Moolenaarsyn keyword htmlArg contained summary tabindex valuetype version
123071d4279SBram Moolenaar
12468563937SBram Moolenaar" html 5 arg names
125690afe1fSBram Moolenaarsyn keyword htmlArg contained allowfullscreen async autocomplete autofocus
126690afe1fSBram Moolenaarsyn keyword htmlArg contained autoplay challenge contenteditable contextmenu
1275666fcd0SBram Moolenaarsyn keyword htmlArg contained controls crossorigin default dirname download
1285666fcd0SBram Moolenaarsyn keyword htmlArg contained draggable dropzone form formaction formenctype
1295666fcd0SBram Moolenaarsyn keyword htmlArg contained formmethod formnovalidate formtarget hidden
1305666fcd0SBram Moolenaarsyn keyword htmlArg contained high icon inputmode keytype kind list loop low
1315666fcd0SBram Moolenaarsyn keyword htmlArg contained max min minlength muted nonce novalidate open
132690afe1fSBram Moolenaarsyn keyword htmlArg contained optimum pattern placeholder poster preload
133690afe1fSBram Moolenaarsyn keyword htmlArg contained radiogroup required reversed sandbox spellcheck
134690afe1fSBram Moolenaarsyn keyword htmlArg contained sizes srcset srcdoc srclang step title translate
135690afe1fSBram Moolenaarsyn keyword htmlArg contained typemustmatch
13668563937SBram Moolenaar
137071d4279SBram Moolenaar" special characters
138071d4279SBram Moolenaarsyn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
139071d4279SBram Moolenaar
140071d4279SBram Moolenaar" Comments (the real ones or the old netscape ones)
141071d4279SBram Moolenaarif exists("html_wrong_comments")
1420c5fa7d7SBram Moolenaar  syn region htmlComment                start=+<!--+    end=+--\s*>+ contains=@Spell
143071d4279SBram Moolenaarelse
144*9faec4e3SBram Moolenaar  " The HTML 5.2 syntax 8.2.4.41-42: bogus comment is parser error; browser skips until next &gt;
145*9faec4e3SBram Moolenaar  " Note: must stand first to get lesser :syn-priority
146*9faec4e3SBram Moolenaar  syn region htmlComment                start=+<!+      end=+>+     contains=htmlCommentError
147*9faec4e3SBram Moolenaar  " Normal comment opening <!-- ...>
148*9faec4e3SBram Moolenaar  syn region htmlComment                start=+<!--+    end=+>+     contains=htmlCommentPart,@Spell
149*9faec4e3SBram Moolenaar  " Idem 8.2.4.43-44: <!--> and <!---> are parser errors; browser treats as comments
150*9faec4e3SBram Moolenaar  syn match htmlComment "<!---\?>" contains=htmlCommentError
151*9faec4e3SBram Moolenaar  " Idem 8.2.4.51: any number of consecutive dashes within comment is okay; --> closes comment
152*9faec4e3SBram Moolenaar  " Idem 8.2.4.52: closing comment by dash-dash-bang (--!>) is error ignored by parser(!); closes comment
153*9faec4e3SBram Moolenaar  syn region htmlCommentPart  contained start=+--+      end=+--!\?>+me=e-1  contains=htmlCommentNested,@htmlPreProc,@Spell
154*9faec4e3SBram Moolenaar  " Idem 8.2.4.49: opening nested comment <!-- is parser error, ignored by browser, except <!--> is all right
155*9faec4e3SBram Moolenaar  syn match htmlCommentNested contained "<!--[^>]"me=e-1
156*9faec4e3SBram Moolenaar  syn match htmlCommentNested contained "<!--->"me=e-3
157*9faec4e3SBram Moolenaar  syn match htmlCommentNested contained "<!---\?!>"me=e-4
158071d4279SBram Moolenaar  syn match htmlCommentError contained "[^><!]"
159071d4279SBram Moolenaarendif
160071d4279SBram Moolenaarsyn region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+
161071d4279SBram Moolenaar
162071d4279SBram Moolenaar" server-parsed commands
163071d4279SBram Moolenaarsyn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
164071d4279SBram Moolenaarsyn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
165071d4279SBram Moolenaarsyn match htmlPreError contained "<!--#\S*"ms=s+4
166071d4279SBram Moolenaarsyn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
167071d4279SBram Moolenaarsyn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
168071d4279SBram Moolenaarsyn match htmlPreProcAttrError contained "\w\+="he=e-1
169071d4279SBram Moolenaarsyn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
170071d4279SBram Moolenaar
171071d4279SBram Moolenaarif !exists("html_no_rendering")
172071d4279SBram Moolenaar  " rendering
173ce0842a6SBram Moolenaar  syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
174071d4279SBram Moolenaar
17562e1bb4aSBram Moolenaar  syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
17662e1bb4aSBram Moolenaar  syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
17701164a65SBram Moolenaar
17862e1bb4aSBram Moolenaar  syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
17962e1bb4aSBram Moolenaar  syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
18062e1bb4aSBram Moolenaar  syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
18162e1bb4aSBram Moolenaar  syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
18262e1bb4aSBram Moolenaar  syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
18362e1bb4aSBram Moolenaar  syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
18462e1bb4aSBram Moolenaar  syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
18562e1bb4aSBram Moolenaar  syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
186071d4279SBram Moolenaar
18762e1bb4aSBram Moolenaar  syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
18862e1bb4aSBram Moolenaar  syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
18962e1bb4aSBram Moolenaar  syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
19062e1bb4aSBram Moolenaar  syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
19162e1bb4aSBram Moolenaar  syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
19262e1bb4aSBram Moolenaar  syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
19362e1bb4aSBram Moolenaar  syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
19462e1bb4aSBram Moolenaar  syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
19562e1bb4aSBram Moolenaar  syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
196071d4279SBram Moolenaar
19762e1bb4aSBram Moolenaar  syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
19862e1bb4aSBram Moolenaar  syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
19962e1bb4aSBram Moolenaar  syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
20062e1bb4aSBram Moolenaar  syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
20162e1bb4aSBram Moolenaar  syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
20262e1bb4aSBram Moolenaar  syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
20362e1bb4aSBram Moolenaar  syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
20462e1bb4aSBram Moolenaar  syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
205071d4279SBram Moolenaar
2060c5fa7d7SBram Moolenaar  syn match htmlLeadingSpace "^\s\+" contained
20762e1bb4aSBram Moolenaar  syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
20862e1bb4aSBram Moolenaar  syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
20962e1bb4aSBram Moolenaar  syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
21062e1bb4aSBram Moolenaar  syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
21162e1bb4aSBram Moolenaar  syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
21262e1bb4aSBram Moolenaar  syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
21362e1bb4aSBram Moolenaar  syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
21462e1bb4aSBram Moolenaar  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
21562e1bb4aSBram Moolenaar  syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
216071d4279SBram Moolenaarendif
217071d4279SBram Moolenaar
218071d4279SBram Moolenaarsyn keyword htmlTagName         contained noscript
219071d4279SBram Moolenaarsyn keyword htmlSpecialTagName  contained script style
220071d4279SBram Moolenaarif main_syntax != 'java' || exists("java_javascript")
221071d4279SBram Moolenaar  " JAVA SCRIPT
2229e54a0e7SBram Moolenaar  syn include @htmlJavaScript syntax/javascript.vim
223071d4279SBram Moolenaar  unlet b:current_syntax
2248feef4ffSBram Moolenaar  syn region  javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
2250c5fa7d7SBram Moolenaar  syn region  htmlScriptTag     contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
226f37506f6SBram Moolenaar  hi def link htmlScriptTag htmlTag
227071d4279SBram Moolenaar
228071d4279SBram Moolenaar  " html events (i.e. arguments that include javascript commands)
229071d4279SBram Moolenaar  if exists("html_extended_events")
230071d4279SBram Moolenaar    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
231071d4279SBram Moolenaar    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
232071d4279SBram Moolenaar  else
233071d4279SBram Moolenaar    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
234071d4279SBram Moolenaar    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
235071d4279SBram Moolenaar  endif
236071d4279SBram Moolenaar  syn region htmlEventSQ        contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
237071d4279SBram Moolenaar  syn region htmlEventDQ        contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
238f37506f6SBram Moolenaar  hi def link htmlEventSQ htmlEvent
239f37506f6SBram Moolenaar  hi def link htmlEventDQ htmlEvent
240071d4279SBram Moolenaar
241071d4279SBram Moolenaar  " a javascript expression is used as an arg value
242071d4279SBram Moolenaar  syn region  javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
243071d4279SBram Moolenaarendif
244071d4279SBram Moolenaar
245071d4279SBram Moolenaarif main_syntax != 'java' || exists("java_vb")
246071d4279SBram Moolenaar  " VB SCRIPT
2479e54a0e7SBram Moolenaar  syn include @htmlVbScript syntax/vb.vim
248071d4279SBram Moolenaar  unlet b:current_syntax
2498feef4ffSBram Moolenaar  syn region  javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
250071d4279SBram Moolenaarendif
251071d4279SBram Moolenaar
252071d4279SBram Moolenaarsyn cluster htmlJavaScript      add=@htmlPreproc
253071d4279SBram Moolenaar
254071d4279SBram Moolenaarif main_syntax != 'java' || exists("java_css")
255071d4279SBram Moolenaar  " embedded style sheets
256071d4279SBram Moolenaar  syn keyword htmlArg           contained media
2579e54a0e7SBram Moolenaar  syn include @htmlCss syntax/css.vim
258071d4279SBram Moolenaar  unlet b:current_syntax
259071d4279SBram Moolenaar  syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
260071d4279SBram Moolenaar  syn match htmlCssStyleComment contained "\(<!--\|-->\)"
261071d4279SBram Moolenaar  syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
262f37506f6SBram Moolenaar  hi def link htmlStyleArg htmlString
263071d4279SBram Moolenaarendif
264071d4279SBram Moolenaar
265071d4279SBram Moolenaarif main_syntax == "html"
266071d4279SBram Moolenaar  " synchronizing (does not always work if a comment includes legal
267071d4279SBram Moolenaar  " html tags, but doing it right would mean to always start
268071d4279SBram Moolenaar  " at the first line, which is too slow)
269071d4279SBram Moolenaar  syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
270071d4279SBram Moolenaar  syn sync match htmlHighlight groupthere javaScript "<script"
271071d4279SBram Moolenaar  syn sync match htmlHighlightSkip "^.*['\"].*$"
272071d4279SBram Moolenaar  syn sync minlines=10
273071d4279SBram Moolenaarendif
274071d4279SBram Moolenaar
275071d4279SBram Moolenaar" The default highlighting.
276f37506f6SBram Moolenaarhi def link htmlTag                     Function
277f37506f6SBram Moolenaarhi def link htmlEndTag                  Identifier
278f37506f6SBram Moolenaarhi def link htmlArg                     Type
279f37506f6SBram Moolenaarhi def link htmlTagName                 htmlStatement
280f37506f6SBram Moolenaarhi def link htmlSpecialTagName          Exception
281f37506f6SBram Moolenaarhi def link htmlValue                     String
282f37506f6SBram Moolenaarhi def link htmlSpecialChar             Special
283071d4279SBram Moolenaar
284071d4279SBram Moolenaarif !exists("html_no_rendering")
285f37506f6SBram Moolenaar  hi def link htmlH1                      Title
286f37506f6SBram Moolenaar  hi def link htmlH2                      htmlH1
287f37506f6SBram Moolenaar  hi def link htmlH3                      htmlH2
288f37506f6SBram Moolenaar  hi def link htmlH4                      htmlH3
289f37506f6SBram Moolenaar  hi def link htmlH5                      htmlH4
290f37506f6SBram Moolenaar  hi def link htmlH6                      htmlH5
291f37506f6SBram Moolenaar  hi def link htmlHead                    PreProc
292f37506f6SBram Moolenaar  hi def link htmlTitle                   Title
293f37506f6SBram Moolenaar  hi def link htmlBoldItalicUnderline     htmlBoldUnderlineItalic
294f37506f6SBram Moolenaar  hi def link htmlUnderlineBold           htmlBoldUnderline
295f37506f6SBram Moolenaar  hi def link htmlUnderlineItalicBold     htmlBoldUnderlineItalic
296f37506f6SBram Moolenaar  hi def link htmlUnderlineBoldItalic     htmlBoldUnderlineItalic
297f37506f6SBram Moolenaar  hi def link htmlItalicUnderline         htmlUnderlineItalic
298f37506f6SBram Moolenaar  hi def link htmlItalicBold              htmlBoldItalic
299f37506f6SBram Moolenaar  hi def link htmlItalicBoldUnderline     htmlBoldUnderlineItalic
300f37506f6SBram Moolenaar  hi def link htmlItalicUnderlineBold     htmlBoldUnderlineItalic
301f37506f6SBram Moolenaar  hi def link htmlLink                    Underlined
302f37506f6SBram Moolenaar  hi def link htmlLeadingSpace            None
303071d4279SBram Moolenaar  if !exists("html_my_rendering")
304071d4279SBram Moolenaar    hi def htmlBold                term=bold cterm=bold gui=bold
305071d4279SBram Moolenaar    hi def htmlBoldUnderline       term=bold,underline cterm=bold,underline gui=bold,underline
306071d4279SBram Moolenaar    hi def htmlBoldItalic          term=bold,italic cterm=bold,italic gui=bold,italic
307071d4279SBram Moolenaar    hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
308071d4279SBram Moolenaar    hi def htmlUnderline           term=underline cterm=underline gui=underline
309071d4279SBram Moolenaar    hi def htmlUnderlineItalic     term=italic,underline cterm=italic,underline gui=italic,underline
310071d4279SBram Moolenaar    hi def htmlItalic              term=italic cterm=italic gui=italic
31101164a65SBram Moolenaar    if v:version > 800 || v:version == 800 && has("patch1038")
31201164a65SBram Moolenaar        hi def htmlStrike              term=strikethrough cterm=strikethrough gui=strikethrough
31301164a65SBram Moolenaar    else
31401164a65SBram Moolenaar        hi def htmlStrike              term=underline cterm=underline gui=underline
31501164a65SBram Moolenaar    endif
316071d4279SBram Moolenaar  endif
317071d4279SBram Moolenaarendif
318071d4279SBram Moolenaar
319f37506f6SBram Moolenaarhi def link htmlPreStmt            PreProc
320f37506f6SBram Moolenaarhi def link htmlPreError           Error
321f37506f6SBram Moolenaarhi def link htmlPreProc            PreProc
322f37506f6SBram Moolenaarhi def link htmlPreAttr            String
323f37506f6SBram Moolenaarhi def link htmlPreProcAttrName    PreProc
324f37506f6SBram Moolenaarhi def link htmlPreProcAttrError   Error
325f37506f6SBram Moolenaarhi def link htmlSpecial            Special
326f37506f6SBram Moolenaarhi def link htmlSpecialChar        Special
327f37506f6SBram Moolenaarhi def link htmlString             String
328f37506f6SBram Moolenaarhi def link htmlStatement          Statement
329f37506f6SBram Moolenaarhi def link htmlComment            Comment
330f37506f6SBram Moolenaarhi def link htmlCommentPart        Comment
331f37506f6SBram Moolenaarhi def link htmlValue              String
332*9faec4e3SBram Moolenaarhi def link htmlCommentNested      htmlCommentError
333f37506f6SBram Moolenaarhi def link htmlCommentError       htmlError
334f37506f6SBram Moolenaarhi def link htmlTagError           htmlError
335f37506f6SBram Moolenaarhi def link htmlEvent              javaScript
336f37506f6SBram Moolenaarhi def link htmlError              Error
337071d4279SBram Moolenaar
338f37506f6SBram Moolenaarhi def link javaScript             Special
339f37506f6SBram Moolenaarhi def link javaScriptExpression   javaScript
340f37506f6SBram Moolenaarhi def link htmlCssStyleComment    Comment
341f37506f6SBram Moolenaarhi def link htmlCssDefinition      Special
342071d4279SBram Moolenaar
343071d4279SBram Moolenaarlet b:current_syntax = "html"
344071d4279SBram Moolenaar
345071d4279SBram Moolenaarif main_syntax == 'html'
346071d4279SBram Moolenaar  unlet main_syntax
347071d4279SBram Moolenaarendif
348071d4279SBram Moolenaar
3490c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save
3500c5fa7d7SBram Moolenaarunlet s:cpo_save
351071d4279SBram Moolenaar" vim: ts=8
352