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