blob: 8b36b7232289ce6e26bbc3f413864b8265dbe679 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaard09acef2012-09-21 14:54:30 +02002" Language: Cascading Style Sheets
3" Previous Contributor List:
4" Claudio Fleiner <claudio@fleiner.com> (Maintainer)
5" Yeti (Add full CSS2, HTML4 support)
6" Nikolai Weibull (Add CSS2 support)
7" Maintainer: Jules Wang <w.jq0722@gmail.com>
Bram Moolenaar3a0d8092012-10-21 03:02:54 +02008" URL: https://github.com/JulesWang/css.vim
Bram Moolenaare2db6952013-07-24 19:53:36 +02009" Last Change: 2013 Jul 23
Bram Moolenaar071d4272004-06-13 20:20:40 +000010
11" For version 5.x: Clear all syntax items
12" For version 6.x: Quit when a syntax file was already loaded
13if !exists("main_syntax")
14 if version < 600
15 syntax clear
16 elseif exists("b:current_syntax")
Bram Moolenaare2db6952013-07-24 19:53:36 +020017 finish
18 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000019 let main_syntax = 'css'
Bram Moolenaare2db6952013-07-24 19:53:36 +020020elseif exists("b:current_syntax") && b:current_syntax == "css"
21 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000022endif
23
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020024let s:cpo_save = &cpo
25set cpo&vim
26
Bram Moolenaar071d4272004-06-13 20:20:40 +000027syn case ignore
28
Bram Moolenaard09acef2012-09-21 14:54:30 +020029" All HTML4 tags
Bram Moolenaar071d4272004-06-13 20:20:40 +000030syn keyword cssTagName abbr acronym address applet area a b base
31syn keyword cssTagName basefont bdo big blockquote body br button
32syn keyword cssTagName caption center cite code col colgroup dd del
33syn keyword cssTagName dfn dir div dl dt em fieldset font form frame
34syn keyword cssTagName frameset h1 h2 h3 h4 h5 h6 head hr html img i
35syn keyword cssTagName iframe img input ins isindex kbd label legend li
36syn keyword cssTagName link map menu meta noframes noscript ol optgroup
37syn keyword cssTagName option p param pre q s samp script select small
Bram Moolenaard09acef2012-09-21 14:54:30 +020038syn keyword cssTagName span strike strong style sub sup table tbody td
Bram Moolenaar071d4272004-06-13 20:20:40 +000039syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
Bram Moolenaard09acef2012-09-21 14:54:30 +020040syn keyword cssTagName object
41
42" HTML5 new tags 5*6=30
43syn keyword cssTagName article aside audio bdi canvas command
44syn keyword cssTagName datalist details embed figcaption figure footer
45syn keyword cssTagName header hgroup keygen mark meter nav
46syn keyword cssTagName output progress rt rp ruby section
47syn keyword cssTagName source summary time track video wbr
48
49" Tags not supported in HTML5
50syn keyword cssDeprecated acronym applet basefont big center dir
51syn keyword cssDeprecated font frame frameset noframes strike tt
52
53"syn match cssTagName "\<table\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000054syn match cssTagName "\*"
55
Bram Moolenaard09acef2012-09-21 14:54:30 +020056" selectors
57syn match cssSelectorOp "[,>+]"
58syn match cssSelectorOp2 "[~|^$*]\?=" contained
59" FIXME: add HTML5 attribute
Bram Moolenaar071d4272004-06-13 20:20:40 +000060syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
61
Bram Moolenaard09acef2012-09-21 14:54:30 +020062" .class and #id
63syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+"
64
Bram Moolenaara5792f52005-11-23 21:25:05 +000065try
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000066syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
Bram Moolenaara5792f52005-11-23 21:25:05 +000067catch /^.*/
68syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
69endtry
70
Bram Moolenaard09acef2012-09-21 14:54:30 +020071syn match cssTagName "@page\>" nextgroup=cssDefinition
72" FIXME: use cssVendor here
73syn match cssTagName "@\(-\(webkit\|moz\|o\|ms\)-\)\=keyframes\>" nextgroup=cssDefinition
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75syn match cssMedia "@media\>" nextgroup=cssMediaType skipwhite skipnl
76syn keyword cssMediaType contained screen print aural braile embosed handheld projection ty tv all nextgroup=cssMediaComma,cssMediaBlock skipwhite skipnl
Bram Moolenaard09acef2012-09-21 14:54:30 +020077"syn match cssMediaComma "," nextgroup=cssMediaType skipwhite skipnl
Bram Moolenaar071d4272004-06-13 20:20:40 +000078syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssError,cssComment,cssDefinition,cssURL,cssUnicodeEscape,cssIdentifier
79
80syn match cssValueInteger contained "[-+]\=\d\+"
81syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\="
Bram Moolenaard09acef2012-09-21 14:54:30 +020082syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000083syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)"
84syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)"
85syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)"
86
87syn match cssFontDescriptor "@font-face\>" nextgroup=cssFontDescriptorBlock skipwhite skipnl
88syn region cssFontDescriptorBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssComment,cssError,cssUnicodeEscape,cssFontProp,cssFontAttr,cssCommonAttr,cssStringQ,cssStringQQ,cssFontDescriptorProp,cssValue.*,cssFontDescriptorFunction,cssUnicodeRange,cssFontDescriptorAttr
89syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
90syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
91syn keyword cssFontDescriptorAttr contained all
92syn region cssFontDescriptorFunction contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline keepend
93syn match cssUnicodeRange contained "U+[0-9A-Fa-f?]\+"
94syn match cssUnicodeRange contained "U+\x\+-\x\+"
95
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020096" The 16 basic color names
Bram Moolenaar071d4272004-06-13 20:20:40 +000097syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020098
99" 130 more color names
100syn keyword cssColor contained aliceblue antiquewhite aquamarine azure
101syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood
102syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
103syn match cssColor contained /dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)/
104syn match cssColor contained /dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)/
105syn match cssColor contained /darkslate\(blue\|gray\|grey\)/
106syn match cssColor contained /dark\(turquoise\|violet\)/
107syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick
108syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold
109syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink
110syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen
111syn keyword cssColor contained lemonchiffon limegreen linen magenta
112syn match cssColor contained /light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)/
113syn match cssColor contained /light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)/
114syn match cssColor contained /light\(slategray\|slategrey\|steelblue\)/
115syn match cssColor contained /medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)/
116syn match cssColor contained /medium\(slateblue\|springgreen\|turquoise\|violetred\)/
117syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite
118syn keyword cssColor contained oldlace olivedrab orange orangered orchid
119syn match cssColor contained /pale\(goldenrod\|green\|turquoise\|violetred\)/
120syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue
121syn keyword cssColor contained rosybrown royalblue saddlebrown salmon sandybrown
122syn keyword cssColor contained seagreen seashell sienna skyblue slateblue
123syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan
124syn keyword cssColor contained thistle tomato turquoise violet wheat
125syn keyword cssColor contained whitesmoke yellowgreen
126
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127" FIXME: These are actually case-insentivie too, but (a) specs recommend using
128" mixed-case (b) it's hard to highlight the word `Background' correctly in
129" all situations
130syn case match
131syn 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
132syn case ignore
Bram Moolenaard09acef2012-09-21 14:54:30 +0200133
134syn match cssImportant contained "!\s*important\>"
135
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136syn match cssColor contained "\<transparent\>"
137syn match cssColor contained "\<white\>"
138syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>"
139syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200140
Bram Moolenaar071d4272004-06-13 20:20:40 +0000141syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline keepend
Bram Moolenaard09acef2012-09-21 14:54:30 +0200142syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\)\s*(" end=")" oneline keepend
143syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\)\s*(" end=")" oneline keepend
144syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear\|radial\)-gradient\s*(" end=")" oneline keepend
145syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y|\Z\)\=\|translate\(3d\|X\|Y|\Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y|\Z\)\=\|perspective\)\s*(" end=")" oneline keepend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146
Bram Moolenaard09acef2012-09-21 14:54:30 +0200147" Prop and Attr
148" Reference: http://www.w3schools.com/cssref/default.asp
149syn keyword cssCommonAttr contained auto none inherit all
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150syn keyword cssCommonAttr contained top bottom
151syn keyword cssCommonAttr contained medium normal
152
Bram Moolenaard09acef2012-09-21 14:54:30 +0200153
154syn match cssAnimationProp contained "\<animation\(-\(name\|duration\|timing-function\|delay\|iteration-cout\|play-state\)\)\=\>"
155
156
157syn keyword cssAnimationAttr contained infinite alternate paused running
158" bugfix: escape linear-gradient
159syn match cssAnimationAttr contained "\<linear\(-gradient\)\@!\>"
160syn match cssAnimationAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
161
162syn match cssBackgroundProp contained "\<background\(-\(color\|image\|attachment\|position\|clip\|origin\|size\)\)\=\>"
163syn keyword cssBackgroundAttr contained center fixed over contain
164syn match cssBackgroundAttr contained "\<no-repeat\>"
165syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
166syn match cssBackgroundAttr contained "\<\(border\|content\|padding\)-box\>"
167
168
169syn match cssBorderOutlineProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
170syn match cssBorderOutlineProp contained "\<outline\(-\(width\|style\|color\)\)\=\>"
171syn match cssBorderOutlineProp contained "\<border-\(top\|bottom\)-\(left\|right\)\(-radius\)\=\>"
172syn match cssBorderOutlineProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
173syn match cssBorderOutlineProp contained "\<border-radius\>"
174syn keyword cssBorderOutlineAttr contained thin thick medium
175syn keyword cssBorderOutlineAttr contained dotted dashed solid double groove ridge inset outset
176syn keyword cssBorderOutlineAttr contained hidden visible scroll collapse
177syn keyword cssBorderOutlineAttr contained stretch round
178
179
180syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
181syn match cssBoxProp contained "\<rotation\(-point\)=\>"
182syn keyword cssBoxAttr contained visible hidden scroll auto
183syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
184
185syn keyword cssColorProp contained opacity
186syn match cssColorProp contained "\<color-profile\>"
187syn match cssColorProp contained "\<rendering-intent\>"
188
189
190syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
191syn keyword cssDimensionProp contained height
192syn keyword cssDimensionProp contained width
193
194" shadow and sizing are in other property groups
195syn match cssFlexibleBoxProp contained "\<box-\(align\|direction\|flex\|ordinal-group\|orient\|pack\|shadow\|sizing\)\>"
196syn keyword cssFlexibleBoxAttr contained start end center baseline stretch
197syn keyword cssFlexibleBoxAttr contained normal reverse
198syn keyword cssFlexibleBoxAttr contained single mulitple
199syn keyword cssFlexibleBoxAttr contained horizontal
200" bugfix: escape vertial-align
201syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>"
202syn match cssFlexibleBoxAttr contained "\<\(inline\|block\)-axis\>"
203
204
Bram Moolenaar59c03952010-07-28 12:52:27 +0200205syn match cssFontProp contained "\<font\(-\(family\|style\|variant\|weight\|size\(-adjust\)\=\|stretch\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206syn match cssFontAttr contained "\<\(sans-\)\=\<serif\>"
Bram Moolenaar59c03952010-07-28 12:52:27 +0200207syn match cssFontAttr contained "\<small\(-\(caps\|caption\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208syn match cssFontAttr contained "\<x\{1,2\}-\(large\|small\)\>"
209syn match cssFontAttr contained "\<message-box\>"
210syn match cssFontAttr contained "\<status-bar\>"
211syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\|status-bar\)-\)\=\(condensed\|expanded\)\>"
212syn keyword cssFontAttr contained cursive fantasy monospace italic oblique
Bram Moolenaard09acef2012-09-21 14:54:30 +0200213syn keyword cssFontAttr contained bold bolder light lighter larger smaller
214syn keyword cssFontAttr contained icon menu caption
215syn keyword cssFontAttr contained large smaller larger narrower wider
216syn keyword cssFontAttr contained Courier Arial Georgia Times
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218
Bram Moolenaard09acef2012-09-21 14:54:30 +0200219syn keyword cssGeneratedContentProp contained content quotes crop
220syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
221syn match cssGeneratedContentProp contained "\<move-to\>"
222syn match cssGeneratedContentProp contained "\<page-policy\>"
223syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
224
225
226syn match cssGridProp contained "\<grid-\(columns\|rows\)\>"
227
228syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
229
230syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
231syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
232syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
233syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
234syn keyword cssListAttr contained disc circle square hebrew armenian georgian
235syn keyword cssListAttr contained inside outside
236
237
238syn match cssMarginProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
239
240syn match cssMultiColumnProp contained "\<column\(-\(\break-\(after\|before\)\|count\|gap\|rule\(-\(color\|style\|width\)\)\=\)\|span\|width\)\=\>"
241
242
243syn match cssPaddingProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
244
245syn keyword cssPositioningProp contained bottom clear clip display float left
246syn keyword cssPositioningProp contained position right top visibility
247syn match cssPositioningProp contained "\<z-index\>"
248syn keyword cssPositioningAttr contained block inline compact
249syn match cssPositioningAttr contained "\<table\(-\(row-gorup\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
250syn keyword cssPositioningAttr contained left right both
251syn match cssPositioningAttr contained "\<list-item\>"
252syn match cssPositioningAttr contained "\<inline-\(block\|table\)\>"
253syn keyword cssPositioningAttr contained static relative absolute fixed
254
255syn match cssPrintProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
256syn keyword cssPrintProp contained orphans widows
257syn keyword cssPrintAttr contained landscape portrait crop cross always avoid
258
259syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
260syn keyword cssTableAttr contained fixed collapse separate show hide once always
261
262
263syn keyword cssTextProp contained color direction
Bram Moolenaar071d4272004-06-13 20:20:40 +0000264syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200265syn match cssTextProp contained "\<text-\(justify\|\outline\|overflow\|warp\|align-last\)\>"
266syn match cssTextProp contained "\<word-\(break\|\wrap\)\>"
267syn match cssTextProp contained "\<white-space\>"
268syn match cssTextProp contained "\<hanging-punctuation\>"
269syn match cssTextProp contained "\<punctuation-trim\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000270syn match cssTextAttr contained "\<line-through\>"
271syn match cssTextAttr contained "\<text-indent\>"
272syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200273syn keyword cssTextAttr contained ltr rtl embed nowrap
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274syn keyword cssTextAttr contained underline overline blink sub super middle
Bram Moolenaard09acef2012-09-21 14:54:30 +0200275syn keyword cssTextAttr contained capitalize uppercase lowercase
276syn keyword cssTextAttr contained center justify baseline sub super
277syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
278syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
279syn keyword cssTextAttr contained start end adjacent
280syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
281syn keyword cssTextAttr contained distribute kashida first last
282syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
283syn match cssTextAttr contained "\<break-all\>"
284syn match cssTextAttr contained "\<break-word\>"
285syn keyword cssTextAttr contained hyphenate
Bram Moolenaar071d4272004-06-13 20:20:40 +0000286
Bram Moolenaar071d4272004-06-13 20:20:40 +0000287
Bram Moolenaard09acef2012-09-21 14:54:30 +0200288syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
289syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
290syn match cssTransformProp contained "\<backface-visibility\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000291
Bram Moolenaard09acef2012-09-21 14:54:30 +0200292syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000293
Bram Moolenaard09acef2012-09-21 14:54:30 +0200294syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
295syn match cssUIProp contained "\<outline-offset\>"
296syn match cssUIProp contained "\<box-sizing\>"
297syn keyword cssUIProp contained appearance icon resize
298syn keyword cssUIAttr contained window button menu field
Bram Moolenaar071d4272004-06-13 20:20:40 +0000299
300syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
301syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numerals\)\)\=\)\>"
302syn keyword cssAuralProp contained volume during azimuth elevation stress richness
303syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
304syn keyword cssAuralAttr contained silent
305syn match cssAuralAttr contained "\<spell-out\>"
306syn keyword cssAuralAttr contained non mix
307syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
308syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
309syn keyword cssAuralAttr contained leftwards rightwards behind
310syn keyword cssAuralAttr contained below level above higher
311syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\)\>"
312syn keyword cssAuralAttr contained faster slower
313syn keyword cssAuralAttr contained male female child code digits continuous
Bram Moolenaard09acef2012-09-21 14:54:30 +0200314syn match cssAuralAttr contained "\<lower\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315
Bram Moolenaard09acef2012-09-21 14:54:30 +0200316" cursor
317syn keyword cssUIProp contained cursor
318syn match cssUIAttr contained "\<[ns]\=[ew]\=-resize\>"
319syn keyword cssUIAttr contained crosshair default help move pointer
320syn keyword cssUIAttr contained progress wait
321
322" FIXME: I could not find them in reference
323syn keyword cssUIAttr contained invert maker size zoom
324syn match cssRenderAttr contained "\<run-in\>"
325syn match cssRenderAttr contained "\<text-rendering\>"
326syn match cssRenderAttr contained "\<font-smoothing\>"
327syn match cssRenderProp contained "\<marker-offset\>"
328syn match cssRenderAttr contained "\<bidi-override\>"
329
Bram Moolenaar071d4272004-06-13 20:20:40 +0000330
331" FIXME: This allows cssMediaBlock before the semicolon, which is wrong.
332syn region cssInclude start="@import" end=";" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
333syn match cssBraces contained "[{}]"
334syn match cssError contained "{@<>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200335syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336syn match cssBraceError "}"
337
Bram Moolenaard09acef2012-09-21 14:54:30 +0200338" Pseudo class
Bram Moolenaarf1568ec2011-12-14 21:17:39 +0100339syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssPseudoClassId,cssUnicodeEscape
Bram Moolenaard09acef2012-09-21 14:54:30 +0200340syn keyword cssPseudoClassId link visited active hover focus before after left right lang
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341syn match cssPseudoClassId contained "\<first\(-\(line\|letter\|child\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200342" FIXME: handle functions.
343"syn region cssPseudoClassLang matchgroup=cssPseudoClassId start="lang(" end=")"
344syn match cssPseudoClassId contained "\<\(last\|only\|nth\|nth-last\)-child\>"
345syn match cssPseudoClassId contained "\<\(first\|last\|only\|nth\|nth-last\)-of-type\>"
346syn keyword cssPseudoClassId root empty target enable disabled checked not invalid
347syn match cssPseudoClassId contained "::\(-moz-\)\=selection"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000348
Bram Moolenaard09acef2012-09-21 14:54:30 +0200349" Comment
Bram Moolenaar29c34722007-05-12 15:34:06 +0000350syn region cssComment start="/\*" end="\*/" contains=@Spell
Bram Moolenaard09acef2012-09-21 14:54:30 +0200351syn region cssComment start="//" skip="\\$" end="$" keepend contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000352
353syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
354syn match cssSpecialCharQQ +\\"+ contained
355syn match cssSpecialCharQ +\\'+ contained
356syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
357syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
Bram Moolenaard09acef2012-09-21 14:54:30 +0200358
359" Vendor Prefix
360syn match cssVendor contained "\(-\(webkit\|moz\|o\|ms\)-\)"
361
Bram Moolenaar071d4272004-06-13 20:20:40 +0000362
363if main_syntax == "css"
364 syn sync minlines=10
365endif
366
367" Define the default highlighting.
368" For version 5.7 and earlier: only when not done already
369" For version 5.8 and later: only when an item doesn't have highlighting yet
370if version >= 508 || !exists("did_css_syn_inits")
371 if version < 508
372 let did_css_syn_inits = 1
373 command -nargs=+ HiLink hi link <args>
374 else
375 command -nargs=+ HiLink hi def link <args>
376 endif
377
378 HiLink cssComment Comment
Bram Moolenaard09acef2012-09-21 14:54:30 +0200379 HiLink cssVendor Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380 HiLink cssTagName Statement
Bram Moolenaard09acef2012-09-21 14:54:30 +0200381 HiLink cssDeprecated Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000382 HiLink cssSelectorOp Special
383 HiLink cssSelectorOp2 Special
Bram Moolenaard09acef2012-09-21 14:54:30 +0200384
385 HiLink cssAnimationProp StorageClass
386 HiLink cssBackgroundProp StorageClass
387 HiLink cssBorderOutlineProp StorageClass
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388 HiLink cssBoxProp StorageClass
Bram Moolenaard09acef2012-09-21 14:54:30 +0200389 HiLink cssColorProp StorageClass
390 HiLink cssContentForPagedMediaProp StorageClass
391 HiLink cssDimensionProp StorageClass
392 HiLink cssFlexibleBoxProp StorageClass
393 HiLink cssFontProp StorageClass
394 HiLink cssGeneratedContentProp StorageClass
395 HiLink cssGridProp StorageClass
396 HiLink cssHyerlinkProp StorageClass
397 HiLink cssLineboxProp StorageClass
398 HiLink cssListProp StorageClass
399 HiLink cssMarginProp StorageClass
400 HiLink cssMarqueeProp StorageClass
401 HiLink cssMultiColumnProp StorageClass
402 HiLink cssPaddingProp StorageClass
403 HiLink cssPagedMediaProp StorageClass
404 HiLink cssPositioningProp StorageClass
405 HiLink cssPrintProp StorageClass
406 HiLink cssRubyProp StorageClass
407 HiLink cssSpeechProp StorageClass
408 HiLink cssTableProp StorageClass
409 HiLink cssTextProp StorageClass
410 HiLink cssTransformProp StorageClass
411 HiLink cssTransitionProp StorageClass
412 HiLink cssUIProp StorageClass
Bram Moolenaar071d4272004-06-13 20:20:40 +0000413 HiLink cssAuralProp StorageClass
414 HiLink cssRenderProp StorageClass
Bram Moolenaard09acef2012-09-21 14:54:30 +0200415
416 HiLink cssAnimationAttr Type
417 HiLink cssBackgroundAttr Type
418 HiLink cssBorderOutlineAttr Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000419 HiLink cssBoxAttr Type
Bram Moolenaard09acef2012-09-21 14:54:30 +0200420 HiLink cssColorAttr Type
421 HiLink cssContentForPagedMediaAttr Type
422 HiLink cssDimensionAttr Type
423 HiLink cssFlexibleBoxAttr Type
424 HiLink cssFontAttr Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000425 HiLink cssGeneratedContentAttr Type
Bram Moolenaard09acef2012-09-21 14:54:30 +0200426 HiLink cssGridAttr Type
427 HiLink cssHyerlinkAttr Type
428 HiLink cssLineboxAttr Type
429 HiLink cssListAttr Type
430 HiLink cssMarginAttr Type
431 HiLink cssMarqueeAttr Type
432 HiLink cssMultiColumnAttr Type
433 HiLink cssPaddingAttr Type
434 HiLink cssPagedMediaAttr Type
435 HiLink cssPositioningAttr Type
436 HiLink cssPrintAttr Type
437 HiLink cssRubyAttr Type
438 HiLink cssSpeechAttr Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000439 HiLink cssTableAttr Type
Bram Moolenaard09acef2012-09-21 14:54:30 +0200440 HiLink cssTextAttr Type
441 HiLink cssTransformAttr Type
442 HiLink cssTransitionAttr Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000443 HiLink cssUIAttr Type
Bram Moolenaard09acef2012-09-21 14:54:30 +0200444 HiLink cssAuralAttr Type
445 HiLink cssRenderAttr Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000446 HiLink cssCommonAttr Type
Bram Moolenaard09acef2012-09-21 14:54:30 +0200447
Bram Moolenaar071d4272004-06-13 20:20:40 +0000448 HiLink cssPseudoClassId PreProc
449 HiLink cssPseudoClassLang Constant
450 HiLink cssValueLength Number
451 HiLink cssValueInteger Number
452 HiLink cssValueNumber Number
453 HiLink cssValueAngle Number
454 HiLink cssValueTime Number
455 HiLink cssValueFrequency Number
456 HiLink cssFunction Constant
457 HiLink cssURL String
458 HiLink cssFunctionName Function
459 HiLink cssColor Constant
460 HiLink cssIdentifier Function
461 HiLink cssInclude Include
462 HiLink cssImportant Special
463 HiLink cssBraces Function
464 HiLink cssBraceError Error
465 HiLink cssError Error
466 HiLink cssInclude Include
467 HiLink cssUnicodeEscape Special
468 HiLink cssStringQQ String
469 HiLink cssStringQ String
470 HiLink cssMedia Special
471 HiLink cssMediaType Special
472 HiLink cssMediaComma Normal
473 HiLink cssFontDescriptor Special
474 HiLink cssFontDescriptorFunction Constant
475 HiLink cssFontDescriptorProp StorageClass
476 HiLink cssFontDescriptorAttr Type
477 HiLink cssUnicodeRange Constant
Bram Moolenaar29c34722007-05-12 15:34:06 +0000478 HiLink cssClassName Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000479 delcommand HiLink
480endif
481
482let b:current_syntax = "css"
483
484if main_syntax == 'css'
485 unlet main_syntax
486endif
487
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200488let &cpo = s:cpo_save
489unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000490" vim: ts=8
491