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