1" Vim syntax file 2" Language: HTML 3" Maintainer: Jorge Maldonado Ventura <[email protected]> 4" Previous Maintainer: Claudio Fleiner <[email protected]> 5" Last Change: 2016 Dec 29 6" included patch from Jorge Maldonado Ventura 7 8" Please check :help html.vim for some comments and a description of the options 9 10" quit when a syntax file was already loaded 11if !exists("main_syntax") 12 if exists("b:current_syntax") 13 finish 14 endif 15 let main_syntax = 'html' 16endif 17 18let s:cpo_save = &cpo 19set cpo&vim 20 21syntax spell toplevel 22 23syn case ignore 24 25" mark illegal characters 26syn match htmlError "[<>&]" 27 28 29" tags 30syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 31syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc 32syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc 33syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError 34syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster 35syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 36syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster 37syn match htmlTagError contained "[^>]<"ms=s+1 38 39 40" tag names 41syn keyword htmlTagName contained address applet area a base basefont 42syn keyword htmlTagName contained big blockquote br caption center 43syn keyword htmlTagName contained cite code dd dfn dir div dl dt font 44syn keyword htmlTagName contained form hr html img 45syn keyword htmlTagName contained input isindex kbd li link map menu 46syn keyword htmlTagName contained meta ol option param pre p samp span 47syn keyword htmlTagName contained select small strike sub sup 48syn keyword htmlTagName contained table td textarea th tr tt ul var xmp 49syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" 50 51" new html 4.0 tags 52syn keyword htmlTagName contained abbr acronym bdo button col label 53syn keyword htmlTagName contained colgroup del fieldset iframe ins legend 54syn keyword htmlTagName contained object optgroup q s tbody tfoot thead 55 56" new html 5 tags 57syn keyword htmlTagName contained article aside audio bdi canvas datalist 58syn keyword htmlTagName contained details embed figcaption figure 59syn keyword htmlTagName contained footer header hgroup main mark 60syn keyword htmlTagName contained menuitem meter nav output picture 61syn keyword htmlTagName contained progress rb rp rt rtc ruby section 62syn keyword htmlTagName contained slot source template time track video wbr 63 64" legal arg names 65syn keyword htmlArg contained action 66syn keyword htmlArg contained align alink alt archive background bgcolor 67syn keyword htmlArg contained border bordercolor cellpadding 68syn keyword htmlArg contained cellspacing checked class clear code codebase color 69syn keyword htmlArg contained cols colspan content coords enctype face 70syn keyword htmlArg contained gutter height hspace id 71syn keyword htmlArg contained link lowsrc marginheight 72syn keyword htmlArg contained marginwidth maxlength method name prompt 73syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape 74syn keyword htmlArg contained size src start target text type url 75syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap 76syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1 77 78" Netscape extensions 79syn keyword htmlTagName contained frame noframes frameset nobr blink 80syn keyword htmlTagName contained layer ilayer nolayer spacer 81syn keyword htmlArg contained frameborder noresize pagex pagey above below 82syn keyword htmlArg contained left top visibility clip id noshade 83syn match htmlArg contained "\<z-index\>" 84 85" Microsoft extensions 86syn keyword htmlTagName contained marquee 87 88" html 4.0 arg names 89syn match htmlArg contained "\<\(accept-charset\|label\)\>" 90syn keyword htmlArg contained abbr accept accesskey axis char charoff charset 91syn keyword htmlArg contained cite classid codetype compact data datetime 92syn keyword htmlArg contained declare defer dir disabled for frame 93syn keyword htmlArg contained headers hreflang lang language longdesc 94syn keyword htmlArg contained multiple nohref nowrap object profile readonly 95syn keyword htmlArg contained rules scheme scope span standby style 96syn keyword htmlArg contained summary tabindex valuetype version 97 98" special characters 99syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" 100 101" Comments (the real ones or the old netscape ones) 102if exists("html_wrong_comments") 103 syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell 104else 105 syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell 106 syn match htmlCommentError contained "[^><!]" 107 syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell 108endif 109syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+ 110 111" server-parsed commands 112syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr 113syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>" 114syn match htmlPreError contained "<!--#\S*"ms=s+4 115syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName 116syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend 117syn match htmlPreProcAttrError contained "\w\+="he=e-1 118syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1 119 120if !exists("html_no_rendering") 121 " rendering 122 syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc 123 124 syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 125 syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic 126 syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic 127 syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline 128 syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline 129 syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop 130 syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop 131 syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic 132 133 syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic 134 syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic 135 syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic 136 syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold 137 syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold 138 syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop 139 syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop 140 syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop 141 syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop 142 143 syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline 144 syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop 145 syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline 146 syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline 147 syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop 148 syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold 149 syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop 150 syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop 151 152 syn match htmlLeadingSpace "^\s\+" contained 153 syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc 154 syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop 155 syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop 156 syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop 157 syn region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop 158 syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop 159 syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop 160 syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc 161 syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc 162endif 163 164syn keyword htmlTagName contained noscript 165syn keyword htmlSpecialTagName contained script style 166if main_syntax != 'java' || exists("java_javascript") 167 " JAVA SCRIPT 168 syn include @htmlJavaScript syntax/javascript.vim 169 unlet b:current_syntax 170 syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 171 syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent 172 hi def link htmlScriptTag htmlTag 173 174 " html events (i.e. arguments that include javascript commands) 175 if exists("html_extended_events") 176 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ 177 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ 178 else 179 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ 180 syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ 181 endif 182 syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript 183 syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript 184 hi def link htmlEventSQ htmlEvent 185 hi def link htmlEventDQ htmlEvent 186 187 " a javascript expression is used as an arg value 188 syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc 189endif 190 191if main_syntax != 'java' || exists("java_vb") 192 " VB SCRIPT 193 syn include @htmlVbScript syntax/vb.vim 194 unlet b:current_syntax 195 syn region javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 196endif 197 198syn cluster htmlJavaScript add=@htmlPreproc 199 200if main_syntax != 'java' || exists("java_css") 201 " embedded style sheets 202 syn keyword htmlArg contained media 203 syn include @htmlCss syntax/css.vim 204 unlet b:current_syntax 205 syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc 206 syn match htmlCssStyleComment contained "\(<!--\|-->\)" 207 syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc 208 hi def link htmlStyleArg htmlString 209endif 210 211if main_syntax == "html" 212 " synchronizing (does not always work if a comment includes legal 213 " html tags, but doing it right would mean to always start 214 " at the first line, which is too slow) 215 syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" 216 syn sync match htmlHighlight groupthere javaScript "<script" 217 syn sync match htmlHighlightSkip "^.*['\"].*$" 218 syn sync minlines=10 219endif 220 221" The default highlighting. 222hi def link htmlTag Function 223hi def link htmlEndTag Identifier 224hi def link htmlArg Type 225hi def link htmlTagName htmlStatement 226hi def link htmlSpecialTagName Exception 227hi def link htmlValue String 228hi def link htmlSpecialChar Special 229 230if !exists("html_no_rendering") 231 hi def link htmlH1 Title 232 hi def link htmlH2 htmlH1 233 hi def link htmlH3 htmlH2 234 hi def link htmlH4 htmlH3 235 hi def link htmlH5 htmlH4 236 hi def link htmlH6 htmlH5 237 hi def link htmlHead PreProc 238 hi def link htmlTitle Title 239 hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic 240 hi def link htmlUnderlineBold htmlBoldUnderline 241 hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic 242 hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic 243 hi def link htmlItalicUnderline htmlUnderlineItalic 244 hi def link htmlItalicBold htmlBoldItalic 245 hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic 246 hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic 247 hi def link htmlLink Underlined 248 hi def link htmlLeadingSpace None 249 if !exists("html_my_rendering") 250 hi def htmlBold term=bold cterm=bold gui=bold 251 hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline 252 hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic 253 hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline 254 hi def htmlUnderline term=underline cterm=underline gui=underline 255 hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline 256 hi def htmlItalic term=italic cterm=italic gui=italic 257 endif 258endif 259 260hi def link htmlPreStmt PreProc 261hi def link htmlPreError Error 262hi def link htmlPreProc PreProc 263hi def link htmlPreAttr String 264hi def link htmlPreProcAttrName PreProc 265hi def link htmlPreProcAttrError Error 266hi def link htmlSpecial Special 267hi def link htmlSpecialChar Special 268hi def link htmlString String 269hi def link htmlStatement Statement 270hi def link htmlComment Comment 271hi def link htmlCommentPart Comment 272hi def link htmlValue String 273hi def link htmlCommentError htmlError 274hi def link htmlTagError htmlError 275hi def link htmlEvent javaScript 276hi def link htmlError Error 277 278hi def link javaScript Special 279hi def link javaScriptExpression javaScript 280hi def link htmlCssStyleComment Comment 281hi def link htmlCssDefinition Special 282 283let b:current_syntax = "html" 284 285if main_syntax == 'html' 286 unlet main_syntax 287endif 288 289let &cpo = s:cpo_save 290unlet s:cpo_save 291" vim: ts=8 292