Applied MacVim r320 patch
[MacVim.git] / runtime / syntax / css.vim
blob7f9ac258df4249650c2600ecc87fb1de3a91331b
1 " Vim syntax file
2 " Language:     Cascading Style Sheets
3 " Maintainer:   Claudio Fleiner <claudio@fleiner.com>
4 " URL:          http://www.fleiner.com/vim/syntax/css.vim
5 " Last Change:  2006 Jun 19
6 " CSS2 by Nikolai Weibull
7 " Full CSS2, HTML4 support by Yeti
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 = 'css'
18 endif
20 syn case ignore
22 syn keyword cssTagName abbr acronym address applet area a b base
23 syn keyword cssTagName basefont bdo big blockquote body br button
24 syn keyword cssTagName caption center cite code col colgroup dd del
25 syn keyword cssTagName dfn dir div dl dt em fieldset font form frame
26 syn keyword cssTagName frameset h1 h2 h3 h4 h5 h6 head hr html img i
27 syn keyword cssTagName iframe img input ins isindex kbd label legend li
28 syn keyword cssTagName link map menu meta noframes noscript ol optgroup
29 syn keyword cssTagName option p param pre q s samp script select small
30 syn keyword cssTagName span strike strong style sub sup tbody td
31 syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
32 syn match cssTagName "\<table\>"
33 syn match cssTagName "\*"
35 syn match cssTagName "@page\>" nextgroup=cssDefinition
37 syn match cssSelectorOp "[+>.]"
38 syn match cssSelectorOp2 "[~|]\?=" contained
39 syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
41 try
42 syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
43 catch /^.*/
44 syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
45 endtry
48 syn match cssMedia "@media\>" nextgroup=cssMediaType skipwhite skipnl
49 syn keyword cssMediaType contained screen print aural braile embosed handheld projection ty tv all nextgroup=cssMediaComma,cssMediaBlock skipwhite skipnl
50 syn match cssMediaComma "," nextgroup=cssMediaType skipwhite skipnl
51 syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssError,cssComment,cssDefinition,cssURL,cssUnicodeEscape,cssIdentifier
53 syn match cssValueInteger contained "[-+]\=\d\+"
54 syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\="
55 syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\)"
56 syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)"
57 syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)"
58 syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)"
60 syn match cssFontDescriptor "@font-face\>" nextgroup=cssFontDescriptorBlock skipwhite skipnl
61 syn region cssFontDescriptorBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssComment,cssError,cssUnicodeEscape,cssFontProp,cssFontAttr,cssCommonAttr,cssStringQ,cssStringQQ,cssFontDescriptorProp,cssValue.*,cssFontDescriptorFunction,cssUnicodeRange,cssFontDescriptorAttr
62 syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
63 syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
64 syn keyword cssFontDescriptorAttr contained all
65 syn region cssFontDescriptorFunction contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline keepend
66 syn match cssUnicodeRange contained "U+[0-9A-Fa-f?]\+"
67 syn match cssUnicodeRange contained "U+\x\+-\x\+"
69 syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow
70 " FIXME: These are actually case-insentivie too, but (a) specs recommend using
71 " mixed-case (b) it's hard to highlight the word `Background' correctly in
72 " all situations
73 syn case match
74 syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText Background
75 syn case ignore
76 syn match cssColor contained "\<transparent\>"
77 syn match cssColor contained "\<white\>"
78 syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>"
79 syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>"
80 "syn match cssColor contained "\<rgb\s*(\s*\d\+\(\.\d*\)\=%\=\s*,\s*\d\+\(\.\d*\)\=%\=\s*,\s*\d\+\(\.\d*\)\=%\=\s*)"
81 syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline keepend
82 syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\)\s*(" end=")" oneline keepend
84 syn match cssImportant contained "!\s*important\>"
86 syn keyword cssCommonAttr contained auto none inherit
87 syn keyword cssCommonAttr contained top bottom
88 syn keyword cssCommonAttr contained medium normal
90 syn match cssFontProp contained "\<font\>\(-\(family\|style\|variant\|weight\|size\(-adjust\)\=\|stretch\)\>\)\="
91 syn match cssFontAttr contained "\<\(sans-\)\=\<serif\>"
92 syn match cssFontAttr contained "\<small\>\(-\(caps\|caption\)\>\)\="
93 syn match cssFontAttr contained "\<x\{1,2\}-\(large\|small\)\>"
94 syn match cssFontAttr contained "\<message-box\>"
95 syn match cssFontAttr contained "\<status-bar\>"
96 syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\|status-bar\)-\)\=\(condensed\|expanded\)\>"
97 syn keyword cssFontAttr contained cursive fantasy monospace italic oblique
98 syn keyword cssFontAttr contained bold bolder lighter larger smaller
99 syn keyword cssFontAttr contained icon menu
100 syn match cssFontAttr contained "\<caption\>"
101 syn keyword cssFontAttr contained large smaller larger
102 syn keyword cssFontAttr contained narrower wider
104 syn keyword cssColorProp contained color
105 syn match cssColorProp contained "\<background\(-\(color\|image\|attachment\|position\)\)\="
106 syn keyword cssColorAttr contained center scroll fixed
107 syn match cssColorAttr contained "\<repeat\(-[xy]\)\=\>"
108 syn match cssColorAttr contained "\<no-repeat\>"
110 syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
111 syn match cssTextAttr contained "\<line-through\>"
112 syn match cssTextAttr contained "\<text-indent\>"
113 syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
114 syn keyword cssTextAttr contained underline overline blink sub super middle
115 syn keyword cssTextAttr contained capitalize uppercase lowercase center justify baseline sub super
117 syn match cssBoxProp contained "\<\(margin\|padding\|border\)\(-\(top\|right\|bottom\|left\)\)\=\>"
118 syn match cssBoxProp contained "\<border-\(\(\(top\|right\|bottom\|left\)-\)\=\(width\|color\|style\)\)\=\>"
119 syn match cssBoxProp contained "\<\(width\|z-index\)\>"
120 syn match cssBoxProp contained "\<\(min\|max\)-\(width\|height\)\>"
121 syn keyword cssBoxProp contained width height float clear overflow clip visibility
122 syn keyword cssBoxAttr contained thin thick both
123 syn keyword cssBoxAttr contained dotted dashed solid double groove ridge inset outset
124 syn keyword cssBoxAttr contained hidden visible scroll collapse
126 syn keyword cssGeneratedContentProp contained content quotes
127 syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
128 syn match cssGeneratedContentProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
129 syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
130 syn match cssAuralAttr contained "\<lower\>"
131 syn match cssGeneratedContentAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
132 syn match cssGeneratedContentAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
133 syn match cssGeneratedContentAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
134 syn keyword cssGeneratedContentAttr contained disc circle square hebrew armenian georgian
135 syn keyword cssGeneratedContentAttr contained inside outside
137 syn match cssPagingProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
138 syn keyword cssPagingProp contained size marks inside orphans widows
139 syn keyword cssPagingAttr contained landscape portrait crop cross always avoid
141 syn keyword cssUIProp contained cursor
142 syn match cssUIProp contained "\<outline\(-\(width\|style\|color\)\)\=\>"
143 syn match cssUIAttr contained "\<[ns]\=[ew]\=-resize\>"
144 syn keyword cssUIAttr contained default crosshair pointer move wait help
145 syn keyword cssUIAttr contained thin thick
146 syn keyword cssUIAttr contained dotted dashed solid double groove ridge inset outset
147 syn keyword cssUIAttr contained invert
149 syn match cssRenderAttr contained "\<marker\>"
150 syn match cssRenderProp contained "\<\(display\|marker-offset\|unicode-bidi\|white-space\|list-item\|run-in\|inline-table\)\>"
151 syn keyword cssRenderProp contained position top bottom direction
152 syn match cssRenderProp contained "\<\(left\|right\)\>"
153 syn keyword cssRenderAttr contained block inline compact
154 syn match cssRenderAttr contained "\<table\(-\(row-gorup\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
155 syn keyword cssRenderAttr contained static relative absolute fixed
156 syn keyword cssRenderAttr contained ltr rtl embed bidi-override pre nowrap
157 syn match cssRenderAttr contained "\<bidi-override\>"
160 syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
161 syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numerals\)\)\=\)\>"
162 syn keyword cssAuralProp contained volume during azimuth elevation stress richness
163 syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
164 syn keyword cssAuralAttr contained silent
165 syn match cssAuralAttr contained "\<spell-out\>"
166 syn keyword cssAuralAttr contained non mix
167 syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
168 syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
169 syn keyword cssAuralAttr contained leftwards rightwards behind
170 syn keyword cssAuralAttr contained below level above higher
171 syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\)\>"
172 syn keyword cssAuralAttr contained faster slower
173 syn keyword cssAuralAttr contained male female child code digits continuous
175 syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\|speak-header\)\>"
176 syn keyword cssTableAttr contained fixed collapse separate show hide once always
178 " FIXME: This allows cssMediaBlock before the semicolon, which is wrong.
179 syn region cssInclude start="@import" end=";" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
180 syn match cssBraces contained "[{}]"
181 syn match cssError contained "{@<>"
182 syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape
183 syn match cssBraceError "}"
185 syn match cssPseudoClass ":\S*" contains=cssPseudoClassId,cssUnicodeEscape
186 syn keyword cssPseudoClassId contained link visited active hover focus before after left right
187 syn match cssPseudoClassId contained "\<first\(-\(line\|letter\|child\)\)\=\>"
188 syn region cssPseudoClassLang matchgroup=cssPseudoClassId start=":lang(" end=")" oneline
190 syn region cssComment start="/\*" end="\*/" contains=@Spell
192 syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
193 syn match cssSpecialCharQQ +\\"+ contained
194 syn match cssSpecialCharQ +\\'+ contained
195 syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
196 syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
197 syn match cssClassName "\.[A-Za-z][A-Za-z0-9-]\+"
199 if main_syntax == "css"
200   syn sync minlines=10
201 endif
203 " Define the default highlighting.
204 " For version 5.7 and earlier: only when not done already
205 " For version 5.8 and later: only when an item doesn't have highlighting yet
206 if version >= 508 || !exists("did_css_syn_inits")
207   if version < 508
208     let did_css_syn_inits = 1
209     command -nargs=+ HiLink hi link <args>
210   else
211     command -nargs=+ HiLink hi def link <args>
212   endif
214   HiLink cssComment Comment
215   HiLink cssTagName Statement
216   HiLink cssSelectorOp Special
217   HiLink cssSelectorOp2 Special
218   HiLink cssFontProp StorageClass
219   HiLink cssColorProp StorageClass
220   HiLink cssTextProp StorageClass
221   HiLink cssBoxProp StorageClass
222   HiLink cssRenderProp StorageClass
223   HiLink cssAuralProp StorageClass
224   HiLink cssRenderProp StorageClass
225   HiLink cssGeneratedContentProp StorageClass
226   HiLink cssPagingProp StorageClass
227   HiLink cssTableProp StorageClass
228   HiLink cssUIProp StorageClass
229   HiLink cssFontAttr Type
230   HiLink cssColorAttr Type
231   HiLink cssTextAttr Type
232   HiLink cssBoxAttr Type
233   HiLink cssRenderAttr Type
234   HiLink cssAuralAttr Type
235   HiLink cssGeneratedContentAttr Type
236   HiLink cssPagingAttr Type
237   HiLink cssTableAttr Type
238   HiLink cssUIAttr Type
239   HiLink cssCommonAttr Type
240   HiLink cssPseudoClassId PreProc
241   HiLink cssPseudoClassLang Constant
242   HiLink cssValueLength Number
243   HiLink cssValueInteger Number
244   HiLink cssValueNumber Number
245   HiLink cssValueAngle Number
246   HiLink cssValueTime Number
247   HiLink cssValueFrequency Number
248   HiLink cssFunction Constant
249   HiLink cssURL String
250   HiLink cssFunctionName Function
251   HiLink cssColor Constant
252   HiLink cssIdentifier Function
253   HiLink cssInclude Include
254   HiLink cssImportant Special
255   HiLink cssBraces Function
256   HiLink cssBraceError Error
257   HiLink cssError Error
258   HiLink cssInclude Include
259   HiLink cssUnicodeEscape Special
260   HiLink cssStringQQ String
261   HiLink cssStringQ String
262   HiLink cssMedia Special
263   HiLink cssMediaType Special
264   HiLink cssMediaComma Normal
265   HiLink cssFontDescriptor Special
266   HiLink cssFontDescriptorFunction Constant
267   HiLink cssFontDescriptorProp StorageClass
268   HiLink cssFontDescriptorAttr Type
269   HiLink cssUnicodeRange Constant
270   HiLink cssClassName Function
271   delcommand HiLink
272 endif
274 let b:current_syntax = "css"
276 if main_syntax == 'css'
277   unlet main_syntax
278 endif
281 " vim: ts=8