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