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