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