home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / OpenLinux 2.3 CD.iso / live / usr / share / vim / syntax / html.vim < prev    next >
Encoding:
Text File  |  1999-08-10  |  12.0 KB  |  235 lines

  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:    1998 Jul 22
  6.  
  7. " Please check :help html.vim for some comments and a description of the options
  8.  
  9. " Remove any old syntax stuff hanging around
  10. syn clear
  11. syn case ignore
  12.  
  13. " mark illegal characters
  14. syn match htmlError "[<>&]"
  15.  
  16. if !exists("main_syntax")
  17.   let main_syntax = 'html'
  18. endif
  19.  
  20. " tags
  21. syn match   htmlSpecial  contained "\\\d\d\d\|\\."
  22. syn region  htmlString   contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=htmlSpecial,javaScriptExpression
  23. syn region  htmlString   contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=htmlSpecial,javaScriptExpression
  24. syn match   htmlValue    contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression
  25. syn region  htmlEndTag             start=+</+    end=+>+              contains=htmlTagN,htmlTagError
  26. syn region  htmlTag                start=+<[^/]+ end=+>+              contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition
  27. syn match   htmlTagN     contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=htmlTagName,htmlSpecialTagName
  28. syn match   htmlTagN     contained +</\s*[-a-zA-Z0-9]\++ms=s+2 contains=htmlTagName,htmlSpecialTagName
  29. syn match   htmlTagError contained "[^>]<"ms=s+1
  30.  
  31. " tag names
  32. syn keyword htmlTagName contained address applet area a base basefont
  33. syn keyword htmlTagName contained big blockquote br caption center
  34. syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
  35. syn keyword htmlTagName contained form hr html img
  36. syn keyword htmlTagName contained input isindex kbd li link map menu
  37. syn keyword htmlTagName contained meta ol option param pre p samp span
  38. syn keyword htmlTagName contained select small strike sub sup
  39. syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
  40. syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
  41.  
  42. " legal arg names
  43. syn keyword htmlArg contained action
  44. syn keyword htmlArg contained align alink alt archive background bgcolor
  45. syn keyword htmlArg contained border bordercolor cellpadding
  46. syn keyword htmlArg contained cellspacing checked class clear code codebase color
  47. syn keyword htmlArg contained cols colspan content coords enctype face
  48. syn keyword htmlArg contained gutter height hspace id
  49. syn keyword htmlArg contained link lowsrc marginheight
  50. syn keyword htmlArg contained marginwidth maxlength method name prompt
  51. syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
  52. syn keyword htmlArg contained size src start target text type url
  53. syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
  54. syn match   htmlArg contained "http-equiv"
  55. syn match   htmlArg contained "\<\(href\|title\)="me=e-1
  56.  
  57. " Netscape extensions
  58. syn keyword htmlTagName contained frame frameset nobr
  59. syn keyword htmlTagName contained layer ilayer nolayer spacer
  60. syn keyword htmlArg     contained frameborder noresize pagex pagey above below
  61. syn keyword htmlArg     contained left top visibility clip id noshade
  62. syn match   htmlArg     contained "z-index"
  63.  
  64. " special characters
  65. syn match htmlSpecialChar "&[^;]*;"
  66.  
  67. " Comments (the real ones or the old netscape ones)
  68. if exists("html_wrong_comments")
  69.   syn region htmlComment                start=+<!--+      end=+-->+
  70. else
  71.   syn region htmlComment                start=+<!+        end=+>+   contains=htmlCommentPart,htmlCommentError
  72.   syn match  htmlCommentError contained "[^><!]"
  73.   syn region htmlCommentPart  contained start=+--+        end=+--+
  74. endif
  75. syn region htmlComment                start=+<!DOCTYPE+ keepend end=+>+
  76.  
  77. " server-parsed commands
  78. syn region htmlPreProc start=+<!--#+ end=+-->+
  79.  
  80. if !exists("html_no_rendering")
  81.   " rendering
  82.   syn cluster htmlTop contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript
  83.  
  84.   syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
  85.   syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
  86.   syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
  87.   syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline
  88.   syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline
  89.   syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
  90.   syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
  91.   syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic
  92.  
  93.   syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
  94.   syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic
  95.   syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic
  96.   syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmUnderlineItalicBold
  97.   syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmUnderlineItalicBold
  98.   syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
  99.   syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
  100.   syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop
  101.   syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop
  102.  
  103.   syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
  104.   syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop
  105.   syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline
  106.   syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline
  107.   syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop
  108.   syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold
  109.   syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
  110.   syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
  111.  
  112.   syn region htmlLink start="<a\>[^>]*href\>" end="</a>"me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript
  113.   syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop
  114.   syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop
  115.   syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop
  116.   syn region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop
  117.   syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop
  118.   syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop
  119.   syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle
  120.   syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript
  121. endif
  122.  
  123. if main_syntax != 'java' || exists("java_javascript")
  124.   " JAVA SCRIPT
  125.   syn keyword htmlTagName                contained noscript
  126.   syn keyword htmlSpecialTagName         contained script style
  127.  
  128.   syn include @htmlJavaScript <sfile>:p:h/javascript.vim
  129.   syn region  javaScript start=+<script[^>]*>.+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag
  130.   syn region  htmlScriptTag contained start=+<script+ end=+>+              contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
  131.   hi link htmlScriptTag htmlTag
  132.  
  133.   " html events (i.e. arguments that include javascript commands)
  134.   syn region htmlEvent        contained start=+on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
  135.   syn region htmlEventSQ        contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
  136.   syn region htmlEvent        contained start=+on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
  137.   syn region htmlEventDQ        contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
  138.   hi link htmlEventSQ htmlEvent
  139.   hi link htmlEventDQ htmlEvent
  140.  
  141.   " a javascript expression is used as an arg value
  142.   syn region  javaScriptExpression contained                start=+&{+ keepend end=+};+ contains=@htmlJavaScript
  143. endif
  144.  
  145. if main_syntax != 'java' || exists("java_css")
  146.   " embedded style sheets
  147.   syn keyword htmlArg                    contained media
  148.   syn include @htmlCss <sfile>:p:h/css.vim
  149.   syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment
  150.   syn match htmlCssStyleComment contained "\(<!--\|-->\)"
  151.   syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Properties,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString
  152.   hi link htmlStyleArg htmlString
  153. endif
  154.  
  155. if main_syntax == "html"
  156.   " synchronizing (does not always work if a comment includes legal
  157.   " html tags, but doing it right would mean to always start
  158.   " at the first line, which is too slow)
  159.   syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
  160.   syn sync match htmlHighlight groupthere javaScript "<script"
  161.   syn sync match htmlHighlightSkip "^.*['\"].*$"
  162.   syn sync minlines=10
  163. endif
  164.  
  165. if !exists("did_html_syntax_inits")
  166.   let did_html_syntax_inits = 1
  167.   " The default methods for highlighting.  Can be overridden later
  168.   hi link htmlTag            Function
  169.   hi link htmlEndTag            Identifier
  170.   hi link htmlArg            Type
  171.   hi link htmlTagName            htmlStatement
  172.   hi link htmlSpecialTagName        Exception
  173.   hi link htmlValue            Value
  174.   hi link htmlSpecialChar        Special
  175.  
  176.   if !exists("html_no_rendering")
  177.     hi link htmlH1            Title
  178.     hi link htmlH2            htmlH1
  179.     hi link htmlH3            htmlH2
  180.     hi link htmlH4            htmlH3
  181.     hi link htmlH5            htmlH4
  182.     hi link htmlH6            htmlH5
  183.     hi link htmlHead            PreProc
  184.     hi link htmlTitle            Title
  185.     hi link htmlBoldItalicUnderline    htmlBoldUnderlineItalic
  186.     hi link htmlUnderlineBold        htmlBoldUnderline
  187.     hi link htmlUnderlineItalicBold    htmlBoldUnderlineItalic
  188.     hi link htmlUnderlineBoldItalic    htmlBoldUnderlineItalic
  189.     hi link htmlItalicUnderline        htmlUnderlineItalic
  190.     hi link htmlItalicBold        htmlBoldItalic
  191.     hi link htmlItalicBoldUnderline    htmlBoldUnderlineItalic
  192.     hi link htmlItalicUnderlineBold    htmlBoldUnderlineItalic
  193.     if !exists("html_my_rendering")
  194.       if &background == "dark"
  195.     hi htmlLink         term=underline cterm=underline ctermfg=cyan gui=underline guifg=#80a0ff
  196.       else
  197.     hi htmlLink         term=underline cterm=underline ctermfg=DarkBlue gui=underline guifg=Blue
  198.       endif
  199.       hi htmlBold         term=bold cterm=bold gui=bold
  200.       hi htmlBoldUnderline     term=bold,underline cterm=bold,underline gui=bold,underline
  201.       hi htmlBoldItalic         term=bold,italic cterm=bold,italic gui=bold,italic
  202.       hi htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
  203.       hi htmlUnderline         term=underline cterm=underline gui=underline
  204.       hi htmlUnderlineItalic     term=italic,underline cterm=italic,underline gui=italic,underline
  205.       hi htmlItalic         term=italic cterm=italic gui=italic
  206.     endif
  207.   endif
  208.  
  209.   hi link htmlSpecial            Special
  210.   hi link htmlSpecialChar        Special
  211.   hi link htmlString            String
  212.   hi link htmlStatement            Statement
  213.   hi link htmlComment            Comment
  214.   hi link htmlCommentPart        Comment
  215.   hi link htmlPreProc            PreProc
  216.   hi link htmlValue            String
  217.   hi link htmlCommentError        htmlError
  218.   hi link htmlTagError            htmlError
  219.   hi link htmlEvent            javaScript
  220.   hi link htmlError            Error
  221.  
  222.   hi link javaScript            Special
  223.   hi link javaScriptExpression        javaScript
  224.   hi link htmlCssStyleComment        Comment
  225.   hi link htmlCssDefinition        Special
  226. endif
  227.  
  228. let b:current_syntax = "html"
  229.  
  230. if main_syntax == 'html'
  231.   unlet main_syntax
  232. endif
  233.  
  234. " vim: ts=8
  235.