html.vim 15 KB

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