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