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 > 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