1" Vim syntax file 2" Language: HTML 3" Maintainer: Jorge Maldonado Ventura <[email protected]> 4" Previous Maintainer: Claudio Fleiner <[email protected]> 5" Repository: https://notabug.org/jorgesumle/vim-html-syntax 6" Last Change: 2018 Apr 7 7" Included patch from Jorge Maldonado Ventura to fix rendering 8" 9 10" Please check :help html.vim for some comments and a description of the options 11 12" quit when a syntax file was already loaded 13if !exists("main_syntax") 14 if exists("b:current_syntax") 15 finish 16 endif 17 let main_syntax = 'html' 18endif 19 20let s:cpo_save = &cpo 21set cpo&vim 22 23syntax spell toplevel 24 25syn case ignore 26 27" mark illegal characters 28syn match htmlError "[<>&]" 29 30 31" tags 32syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 33syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 34syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc 35syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError 36syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster 37syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 38syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 39syn match htmlTagError contained "[^>]<"ms=s+1 40 41 42" 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 49syn keyword htmlTagName contained select small sub sup 50syn keyword htmlTagName contained table td textarea th tr tt ul var xmp 51syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" 52 53" new html 4.0 tags 54syn keyword htmlTagName contained abbr acronym bdo button col label 55syn keyword htmlTagName contained colgroup fieldset iframe ins legend 56syn keyword htmlTagName contained object optgroup q s tbody tfoot thead 57 58" new html 5 tags 59syn keyword htmlTagName contained article aside audio bdi canvas data 60syn keyword htmlTagName contained datalist details embed figcaption figure 61syn keyword htmlTagName contained footer header hgroup keygen main mark 62syn keyword htmlTagName contained menuitem meter nav output picture 63syn keyword htmlTagName contained progress rb rp rt rtc ruby section 64syn keyword htmlTagName contained slot source template time track video wbr 65 66" legal arg names 67syn keyword htmlArg contained action 68syn keyword htmlArg contained align alink alt archive background bgcolor 69syn keyword htmlArg contained border bordercolor cellpadding 70syn keyword htmlArg contained cellspacing checked class clear code codebase color 71syn keyword htmlArg contained cols colspan content coords enctype face 72syn keyword htmlArg contained gutter height hspace id 73syn keyword htmlArg contained link lowsrc marginheight 74syn keyword htmlArg contained marginwidth maxlength method name prompt 75syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape 76syn keyword htmlArg contained size src start target text type url 77syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap 78syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1 79 80" aria attributes 81syn match htmlArg contained "\<\(aria-activedescendant\|aria-atomic\)\>" 82syn match htmlArg contained "\<\(aria-autocomplete\|aria-busy\|aria-checked\)\>" 83syn match htmlArg contained "\<\(aria-colcount\|aria-colindex\|aria-colspan\)\>" 84syn match htmlArg contained "\<\(aria-controls\|aria-current\)\>" 85syn match htmlArg contained "\<\(aria-describedby\|aria-details\)\>" 86syn match htmlArg contained "\<\(aria-disabled\|aria-dropeffect\)\>" 87syn match htmlArg contained "\<\(aria-errormessage\|aria-expanded\)\>" 88syn match htmlArg contained "\<\(aria-flowto\|aria-grabbed\|aria-haspopup\)\>" 89syn match htmlArg contained "\<\(aria-hidden\|aria-invalid\)\>" 90syn match htmlArg contained "\<\(aria-keyshortcuts\|aria-label\)\>" 91syn match htmlArg contained "\<\(aria-labelledby\|aria-level\|aria-live\)\>" 92syn match htmlArg contained "\<\(aria-modal\|aria-multiline\)\>" 93syn match htmlArg contained "\<\(aria-multiselectable\|aria-orientation\)\>" 94syn match htmlArg contained "\<\(aria-owns\|aria-placeholder\|aria-posinset\)\>" 95syn match htmlArg contained "\<\(aria-pressed\|aria-readonly\|aria-relevant\)\>" 96syn match htmlArg contained "\<\(aria-required\|aria-roledescription\)\>" 97syn match htmlArg contained "\<\(aria-rowcount\|aria-rowindex\|aria-rowspan\)\>" 98syn match htmlArg contained "\<\(aria-selected\|aria-setsize\|aria-sort\)\>" 99syn match htmlArg contained "\<\(aria-valuemax\|aria-valuemin\)\>" 100syn match htmlArg contained "\<\(aria-valuenow\|aria-valuetext\)\>" 101syn keyword htmlArg contained role 102 103" Netscape extensions 104syn keyword htmlTagName contained frame noframes frameset nobr blink 105syn keyword htmlTagName contained layer ilayer nolayer spacer 106syn keyword htmlArg contained frameborder noresize pagex pagey above below 107syn keyword htmlArg contained left top visibility clip id noshade 108syn match htmlArg contained "\<z-index\>" 109 110" Microsoft extensions 111syn keyword htmlTagName contained marquee 112 113" html 4.0 arg names 114syn match htmlArg contained "\<\(accept-charset\|label\)\>" 115syn keyword htmlArg contained abbr accept accesskey axis char charoff charset 116syn keyword htmlArg contained cite classid codetype compact data datetime 117syn keyword htmlArg contained declare defer dir disabled for frame 118syn keyword htmlArg contained headers hreflang lang language longdesc 119syn keyword htmlArg contained multiple nohref nowrap object profile readonly 120syn keyword htmlArg contained rules scheme scope span standby style 121syn keyword htmlArg contained summary tabindex valuetype version 122 123" html 5 arg names 124syn keyword htmlArg contained allowfullscreen async autocomplete autofocus 125syn keyword htmlArg contained autoplay challenge contenteditable contextmenu 126syn keyword htmlArg contained controls crossorigin default dialog dirname 127syn keyword htmlArg contained download draggable dropzone form formaction 128syn keyword htmlArg contained formenctype formmethod formnovalidate formtarget 129syn keyword htmlArg contained hidden high icon inputmode keytype kind list loop 130syn keyword htmlArg contained low max min minlength muted nonce novalidate open 131syn keyword htmlArg contained optimum pattern placeholder poster preload 132syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck 133syn keyword htmlArg contained sizes srcset srcdoc srclang step title translate 134syn keyword htmlArg contained typemustmatch 135 136" special characters 137syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" 138 139" Comments (the real ones or the old netscape ones) 140if exists("html_wrong_comments") 141 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell 142else 143 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell 144 syn match htmlCommentError contained "[^><!]" 145 syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell 146endif 147syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+ 148 149" server-parsed commands 150syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr 151syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>" 152syn match htmlPreError contained "<!--#\S*"ms=s+4 153syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName 154syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend 155syn match htmlPreProcAttrError contained "\w\+="he=e-1 156syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1 157 158if !exists("html_no_rendering") 159 " rendering 160 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc 161 162 syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop 163 syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop 164 165 syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 166 syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 167 syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic 168 syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline 169 syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline 170 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop 171 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop 172 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic 173 174 syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic 175 syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic 176 syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic 177 syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold 178 syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold 179 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop 180 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop 181 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop 182 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop 183 184 syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline 185 syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop 186 syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline 187 syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline 188 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop 189 syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold 190 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop 191 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop 192 193 syn match htmlLeadingSpace "^\s\+" contained 194 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc 195 syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop 196 syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop 197 syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop 198 syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop 199 syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop 200 syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop 201 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 202 syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc 203endif 204 205syn keyword htmlTagName contained noscript 206syn keyword htmlSpecialTagName contained script style 207if main_syntax != 'java' || exists("java_javascript") 208 " JAVA SCRIPT 209 syn include @htmlJavaScript syntax/javascript.vim 210 unlet b:current_syntax 211 syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 212 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent 213 hi def link htmlScriptTag htmlTag 214 215 " html events (i.e. arguments that include javascript commands) 216 if exists("html_extended_events") 217 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ 218 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ 219 else 220 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ 221 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ 222 endif 223 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript 224 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript 225 hi def link htmlEventSQ htmlEvent 226 hi def link htmlEventDQ htmlEvent 227 228 " a javascript expression is used as an arg value 229 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc 230endif 231 232if main_syntax != 'java' || exists("java_vb") 233 " VB SCRIPT 234 syn include @htmlVbScript syntax/vb.vim 235 unlet b:current_syntax 236 syn region javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 237endif 238 239syn cluster htmlJavaScript add=@htmlPreproc 240 241if main_syntax != 'java' || exists("java_css") 242 " embedded style sheets 243 syn keyword htmlArg contained media 244 syn include @htmlCss syntax/css.vim 245 unlet b:current_syntax 246 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc 247 syn match htmlCssStyleComment contained "\(<!--\|-->\)" 248 syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc 249 hi def link htmlStyleArg htmlString 250endif 251 252if main_syntax == "html" 253 " synchronizing (does not always work if a comment includes legal 254 " html tags, but doing it right would mean to always start 255 " at the first line, which is too slow) 256 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" 257 syn sync match htmlHighlight groupthere javaScript "<script" 258 syn sync match htmlHighlightSkip "^.*['\"].*$" 259 syn sync minlines=10 260endif 261 262" The default highlighting. 263hi def link htmlTag Function 264hi def link htmlEndTag Identifier 265hi def link htmlArg Type 266hi def link htmlTagName htmlStatement 267hi def link htmlSpecialTagName Exception 268hi def link htmlValue String 269hi def link htmlSpecialChar Special 270 271if !exists("html_no_rendering") 272 hi def link htmlH1 Title 273 hi def link htmlH2 htmlH1 274 hi def link htmlH3 htmlH2 275 hi def link htmlH4 htmlH3 276 hi def link htmlH5 htmlH4 277 hi def link htmlH6 htmlH5 278 hi def link htmlHead PreProc 279 hi def link htmlTitle Title 280 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic 281 hi def link htmlUnderlineBold htmlBoldUnderline 282 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic 283 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic 284 hi def link htmlItalicUnderline htmlUnderlineItalic 285 hi def link htmlItalicBold htmlBoldItalic 286 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic 287 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic 288 hi def link htmlLink Underlined 289 hi def link htmlLeadingSpace None 290 if !exists("html_my_rendering") 291 hi def htmlBold term=bold cterm=bold gui=bold 292 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline 293 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 294 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline 295 hi def htmlUnderline term=underline cterm=underline gui=underline 296 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline 297 hi def htmlItalic term=italic cterm=italic gui=italic 298 if v:version > 800 || v:version == 800 && has("patch1038") 299 hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough 300 else 301 hi def htmlStrike term=underline cterm=underline gui=underline 302 endif 303 endif 304endif 305 306hi def link htmlPreStmt PreProc 307hi def link htmlPreError Error 308hi def link htmlPreProc PreProc 309hi def link htmlPreAttr String 310hi def link htmlPreProcAttrName PreProc 311hi def link htmlPreProcAttrError Error 312hi def link htmlSpecial Special 313hi def link htmlSpecialChar Special 314hi def link htmlString String 315hi def link htmlStatement Statement 316hi def link htmlComment Comment 317hi def link htmlCommentPart Comment 318hi def link htmlValue String 319hi def link htmlCommentError htmlError 320hi def link htmlTagError htmlError 321hi def link htmlEvent javaScript 322hi def link htmlError Error 323 324hi def link javaScript Special 325hi def link javaScriptExpression javaScript 326hi def link htmlCssStyleComment Comment 327hi def link htmlCssDefinition Special 328 329let b:current_syntax = "html" 330 331if main_syntax == 'html' 332 unlet main_syntax 333endif 334 335let &cpo = s:cpo_save 336unlet s:cpo_save 337" vim: ts=8 338