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