[7.2.325] A stray "w" in the startup vimrc file causes the edited file to be
[vim_mainline.git] / runtime / syntax / html.vim
blob137c13c5b02f68fd855356eafc215ce5de757a54
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
7 " Please check :help html.vim for some comments and a description of the options
9 " For version 5.x: Clear all syntax items
10 " For version 6.x: Quit when a syntax file was already loaded
11 if !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'
18 endif
20 " don't use standard HiLink, it will not work with included syntax files
21 if version < 508
22   command! -nargs=+ HtmlHiLink hi link <args>
23 else
24   command! -nargs=+ HtmlHiLink hi def link <args>
25 endif
27 syntax spell toplevel
29 syn case ignore
31 " mark illegal characters
32 syn match htmlError "[<>&]"
35 " tags
36 syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
37 syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
38 syn match   htmlValue    contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc
39 syn region  htmlEndTag             start=+</+      end=+>+ contains=htmlTagN,htmlTagError
40 syn region  htmlTag                start=+<[^/]+   end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
41 syn match   htmlTagN     contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
42 syn match   htmlTagN     contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
43 syn match   htmlTagError contained "[^>]<"ms=s+1
46 " tag names
47 syn keyword htmlTagName contained address applet area a base basefont
48 syn keyword htmlTagName contained big blockquote br caption center
49 syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
50 syn keyword htmlTagName contained form hr html img
51 syn keyword htmlTagName contained input isindex kbd li link map menu
52 syn keyword htmlTagName contained meta ol option param pre p samp span
53 syn keyword htmlTagName contained select small strike sub sup
54 syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
55 syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
57 " new html 4.0 tags
58 syn keyword htmlTagName contained abbr acronym bdo button col label
59 syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
60 syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
62 " legal arg names
63 syn keyword htmlArg contained action
64 syn keyword htmlArg contained align alink alt archive background bgcolor
65 syn keyword htmlArg contained border bordercolor cellpadding
66 syn keyword htmlArg contained cellspacing checked class clear code codebase color
67 syn keyword htmlArg contained cols colspan content coords enctype face
68 syn keyword htmlArg contained gutter height hspace id
69 syn keyword htmlArg contained link lowsrc marginheight
70 syn keyword htmlArg contained marginwidth maxlength method name prompt
71 syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
72 syn keyword htmlArg contained size src start target text type url
73 syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
74 syn match   htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
76 " Netscape extensions
77 syn keyword htmlTagName contained frame noframes frameset nobr blink
78 syn keyword htmlTagName contained layer ilayer nolayer spacer
79 syn keyword htmlArg     contained frameborder noresize pagex pagey above below
80 syn keyword htmlArg     contained left top visibility clip id noshade
81 syn match   htmlArg     contained "\<z-index\>"
83 " Microsoft extensions
84 syn keyword htmlTagName contained marquee
86 " html 4.0 arg names
87 syn match   htmlArg contained "\<\(accept-charset\|label\)\>"
88 syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
89 syn keyword htmlArg contained cite classid codetype compact data datetime
90 syn keyword htmlArg contained declare defer dir disabled for frame
91 syn keyword htmlArg contained headers hreflang lang language longdesc
92 syn keyword htmlArg contained multiple nohref nowrap object profile readonly
93 syn keyword htmlArg contained rules scheme scope span standby style
94 syn keyword htmlArg contained summary tabindex valuetype version
96 " special characters
97 syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
99 " Comments (the real ones or the old netscape ones)
100 if exists("html_wrong_comments")
101   syn region htmlComment                start=+<!--+    end=+--\s*>+
102 else
103   syn region htmlComment                start=+<!+      end=+>+   contains=htmlCommentPart,htmlCommentError
104   syn match  htmlCommentError contained "[^><!]"
105   syn region htmlCommentPart  contained start=+--+      end=+--\s*+  contains=@htmlPreProc
106 endif
107 syn region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+
109 " server-parsed commands
110 syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
111 syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
112 syn match htmlPreError contained "<!--#\S*"ms=s+4
113 syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
114 syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
115 syn match htmlPreProcAttrError contained "\w\+="he=e-1
116 syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
118 if !exists("html_no_rendering")
119   " rendering
120   syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
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
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
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
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
159 endif
161 syn keyword htmlTagName         contained noscript
162 syn keyword htmlSpecialTagName  contained script style
163 if 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
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
184   " a javascript expression is used as an arg value
185   syn region  javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
186 endif
188 if 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
193 endif
195 syn cluster htmlJavaScript      add=@htmlPreproc
197 if 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
206 endif
208 if 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
216 endif
218 " The default highlighting.
219 if 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
282 endif
284 delcommand HtmlHiLink
286 let b:current_syntax = "html"
288 if main_syntax == 'html'
289   unlet main_syntax
290 endif
292 " vim: ts=8