blob: daca2e052c2c7bc8f6eb30f430a66f608c6ccb45 [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 Moolenaarbaca7f72013-09-22 14:42:24 +02009" Last Change: 2013 Aug 28
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 Moolenaarbaca7f72013-09-22 14:42:24 +020024" Required for cssHacks
25setlocal iskeyword-=_
26
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020027let s:cpo_save = &cpo
28set cpo&vim
29
Bram Moolenaar071d4272004-06-13 20:20:40 +000030syn case ignore
31
Bram Moolenaard09acef2012-09-21 14:54:30 +020032" All HTML4 tags
Bram Moolenaar071d4272004-06-13 20:20:40 +000033syn keyword cssTagName abbr acronym address applet area a b base
34syn keyword cssTagName basefont bdo big blockquote body br button
35syn keyword cssTagName caption center cite code col colgroup dd del
36syn keyword cssTagName dfn dir div dl dt em fieldset font form frame
37syn keyword cssTagName frameset h1 h2 h3 h4 h5 h6 head hr html img i
38syn keyword cssTagName iframe img input ins isindex kbd label legend li
39syn keyword cssTagName link map menu meta noframes noscript ol optgroup
40syn keyword cssTagName option p param pre q s samp script select small
Bram Moolenaard09acef2012-09-21 14:54:30 +020041syn keyword cssTagName span strike strong style sub sup table tbody td
Bram Moolenaar071d4272004-06-13 20:20:40 +000042syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020043syn keyword cssTagName object svg
Bram Moolenaard09acef2012-09-21 14:54:30 +020044
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020045" 34 HTML5 tags
46syn keyword cssTagName article aside audio bdi canvas command data
47syn keyword cssTagName datalist details dialog embed figcaption figure footer
48syn keyword cssTagName header hgroup keygen main mark menuitem meter nav
Bram Moolenaard09acef2012-09-21 14:54:30 +020049syn keyword cssTagName output progress rt rp ruby section
50syn keyword cssTagName source summary time track video wbr
51
52" Tags not supported in HTML5
53syn keyword cssDeprecated acronym applet basefont big center dir
54syn keyword cssDeprecated font frame frameset noframes strike tt
55
Bram Moolenaar071d4272004-06-13 20:20:40 +000056syn match cssTagName "\*"
57
Bram Moolenaard09acef2012-09-21 14:54:30 +020058" selectors
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020059syn match cssSelectorOp "[,>+~]"
Bram Moolenaard09acef2012-09-21 14:54:30 +020060syn match cssSelectorOp2 "[~|^$*]\?=" contained
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020061syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
Bram Moolenaard09acef2012-09-21 14:54:30 +020063" .class and #id
64syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+"
65
Bram Moolenaara5792f52005-11-23 21:25:05 +000066try
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000067syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
Bram Moolenaara5792f52005-11-23 21:25:05 +000068catch /^.*/
69syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
70endtry
71
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020072" digits
73syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
74syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
75syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\)" contains=cssUnitDecorators
76syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)" contains=cssUnitDecorators
77syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)" contains=cssUnitDecorators
78syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)" contains=cssUnitDecorators
Bram Moolenaar071d4272004-06-13 20:20:40 +000079
Bram Moolenaar071d4272004-06-13 20:20:40 +000080
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020081" @media
82syn match cssMedia "@media\>" nextgroup=cssMediaType,cssMediaFeature,cssMediaBlock,cssMediaComma,cssMediaKeyword2 skipwhite skipnl
83syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv all contained skipwhite skipnl nextgroup=cssMediaFeature,cssMediaBlock
84syn match cssMediaFeature /\(and\)\=\s*(.\{-})/ contained skipwhite skipnl contains=cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger,cssMediaAttr,cssVendor nextgroup=cssMediaFeature,cssMediaBlock,cssMediaComma
85syn keyword cssMediaKeyword and contained
86syn keyword cssMediaKeyword2 only not contained nextgroup=cssMediaType skipwhite skipnl
Bram Moolenaar071d4272004-06-13 20:20:40 +000087
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020088syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssTagName,cssClassName,cssIdentifier,cssPseudoClass,cssSelectorOp,cssSelectorOp2,cssAttributeSelector fold
89syn match cssMediaComma "," nextgroup=cssMediaType,cssMediaKeyword2 skipwhite skipnl contained
90
91" Reference: http://www.w3.org/TR/css3-mediaqueries/
92syn keyword cssMediaProp contained width height orientation monochrome scan grid
93syn match cssMediaProp contained /\(\(device\)-\)\=aspect-ratio/
94syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-pixel-ratio/
95syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-\(height\|width\)/
96syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(height\|width\|resolution\|color\(-index\)\=\)/
97syn keyword cssMediaAttr contained portrait landscape progressive interlace
98
99" @page
100syn match cssPage "@page\>" nextgroup=cssPagePseudo,cssDefinition skipwhite skipnl
101syn match cssPagePseudo /:\(left\|right\|first\|\)/ nextgroup=cssDefinition contained skipwhite skipnl
102syn match cssPageHeaderProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained
103syn keyword cssPageProp content size contained
104
105" @keyframe
106syn match cssKeyFrame "@\(-.*-\)\=keyframes\>\(\s*\<\S*\>\)\=" nextgroup=cssKeyFrameBlock contains=cssVendor skipwhite skipnl
107syn region cssKeyFrameBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssKeyFrameSelector,cssDefinition
108syn match cssKeyFrameSelector /\(\d*%\|from\|to\)\=/ contained skipwhite skipnl
109
110" @import
111syn region cssInclude start=/@import\>/ end=/\ze;/ contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ
112syn region cssInclude start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment
113syn region cssInclude start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment
114
115" @font-face
116" http://www.w3.org/TR/css3-fonts/#at-font-face-rule
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117syn match cssFontDescriptor "@font-face\>" nextgroup=cssFontDescriptorBlock skipwhite skipnl
118syn region cssFontDescriptorBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssComment,cssError,cssUnicodeEscape,cssFontProp,cssFontAttr,cssCommonAttr,cssStringQ,cssStringQQ,cssFontDescriptorProp,cssValue.*,cssFontDescriptorFunction,cssUnicodeRange,cssFontDescriptorAttr
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200119"syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
120"syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
121syn keyword cssFontDescriptorProp contained src
122syn match cssFontDescriptorProp contained "\<unicode-range\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123syn keyword cssFontDescriptorAttr contained all
124syn region cssFontDescriptorFunction contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline keepend
125syn match cssUnicodeRange contained "U+[0-9A-Fa-f?]\+"
126syn match cssUnicodeRange contained "U+\x\+-\x\+"
127
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200128" The 16 basic color names
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129syn 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 +0200130
131" 130 more color names
132syn keyword cssColor contained aliceblue antiquewhite aquamarine azure
133syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood
134syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
135syn match cssColor contained /dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)/
136syn match cssColor contained /dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)/
137syn match cssColor contained /darkslate\(blue\|gray\|grey\)/
138syn match cssColor contained /dark\(turquoise\|violet\)/
139syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick
140syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold
141syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink
142syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen
143syn keyword cssColor contained lemonchiffon limegreen linen magenta
144syn match cssColor contained /light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)/
145syn match cssColor contained /light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)/
146syn match cssColor contained /light\(slategray\|slategrey\|steelblue\)/
147syn match cssColor contained /medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)/
148syn match cssColor contained /medium\(slateblue\|springgreen\|turquoise\|violetred\)/
149syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite
150syn keyword cssColor contained oldlace olivedrab orange orangered orchid
151syn match cssColor contained /pale\(goldenrod\|green\|turquoise\|violetred\)/
152syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue
153syn keyword cssColor contained rosybrown royalblue saddlebrown salmon sandybrown
154syn keyword cssColor contained seagreen seashell sienna skyblue slateblue
155syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan
156syn keyword cssColor contained thistle tomato turquoise violet wheat
157syn keyword cssColor contained whitesmoke yellowgreen
158
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200159" FIXME: These are actually case-insensitive too, but (a) specs recommend using
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160" mixed-case (b) it's hard to highlight the word `Background' correctly in
161" all situations
162syn case match
163syn 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
164syn case ignore
Bram Moolenaard09acef2012-09-21 14:54:30 +0200165
166syn match cssImportant contained "!\s*important\>"
167
Bram Moolenaar071d4272004-06-13 20:20:40 +0000168syn match cssColor contained "\<transparent\>"
169syn match cssColor contained "\<white\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200170syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>" contains=cssUnitDecorators
171syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>" contains=cssUnitDecorators
Bram Moolenaard09acef2012-09-21 14:54:30 +0200172
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200173syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline extend
174syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma
175syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
176syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
177syn 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 contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
178syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
179syn match cssFunctionComma contained ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200181" Common Prop and Attr
182syn keyword cssCommonAttr contained auto none inherit all default normal
183syn keyword cssCommonAttr contained top bottom center stretch hidden visible
184"------------------------------------------------
185" CSS Animations
186" http://www.w3.org/TR/css3-animations/
187syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200189" animation-direction attributes
190syn keyword cssAnimationAttr contained alternate reverse
191syn match cssAnimationAttr contained "\<alternate-reverse\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200192
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200193" animation-fill-mode attributes
194syn keyword cssAnimationAttr contained forwards backwards both
Bram Moolenaard09acef2012-09-21 14:54:30 +0200195
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200196" animation-play-state attributes
197syn keyword cssAnimationAttr contained running paused
198"------------------------------------------------
199" CSS Backgrounds and Borders Module Level 3
200" http://www.w3.org/TR/css3-background/
201syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>"
202" background-attachment attributes
203syn keyword cssBackgroundAttr contained scroll fixed local
Bram Moolenaard09acef2012-09-21 14:54:30 +0200204
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200205" background-position attributes
206syn keyword cssBackgroundAttr contained left center right top bottom
Bram Moolenaard09acef2012-09-21 14:54:30 +0200207
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200208" background-repeat attributes
Bram Moolenaard09acef2012-09-21 14:54:30 +0200209syn match cssBackgroundAttr contained "\<no-repeat\>"
210syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200211syn keyword cssBackgroundAttr contained space round
Bram Moolenaard09acef2012-09-21 14:54:30 +0200212
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200213" background-size attributes
214syn keyword cssBackgroundAttr contained cover contain
Bram Moolenaard09acef2012-09-21 14:54:30 +0200215
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200216syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
217syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>"
218syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
219syn match cssBorderProp contained "\<box-decoration-break\>"
220syn match cssBorderProp contained "\<box-shadow\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200221
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200222" border-image attributes
223syn keyword cssBorderAttr contained stretch repeat round space fill
Bram Moolenaard09acef2012-09-21 14:54:30 +0200224
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200225" border-style attributes
226syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
227
228" border-width attributes
229syn keyword cssBorderAttr contained thin thick medium
230
231" box-decoration-break attributes
232syn keyword cssBorderAttr contained clone slice
233"------------------------------------------------
234
235syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
236syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200237syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
238syn match cssBoxProp contained "\<rotation\(-point\)=\>"
239syn keyword cssBoxAttr contained visible hidden scroll auto
240syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
241
242syn keyword cssColorProp contained opacity
243syn match cssColorProp contained "\<color-profile\>"
244syn match cssColorProp contained "\<rendering-intent\>"
245
246
247syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
248syn keyword cssDimensionProp contained height
249syn keyword cssDimensionProp contained width
250
251" shadow and sizing are in other property groups
252syn match cssFlexibleBoxProp contained "\<box-\(align\|direction\|flex\|ordinal-group\|orient\|pack\|shadow\|sizing\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200253syn keyword cssFlexibleBoxAttr contained start end baseline
254syn keyword cssFlexibleBoxAttr contained reverse
Bram Moolenaard09acef2012-09-21 14:54:30 +0200255syn keyword cssFlexibleBoxAttr contained single mulitple
256syn keyword cssFlexibleBoxAttr contained horizontal
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200257syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>" "escape vertical-align
Bram Moolenaard09acef2012-09-21 14:54:30 +0200258syn match cssFlexibleBoxAttr contained "\<\(inline\|block\)-axis\>"
259
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200260" CSS Fonts Module Level 3
261" http://www.w3.org/TR/css-fonts-3/
262syn match cssFontProp contained "\<font\(-\(family\|\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>"
263" font attributes
264syn keyword cssFontAttr contained icon menu caption
265syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000266syn match cssFontAttr contained "\<message-box\>"
267syn match cssFontAttr contained "\<status-bar\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200268syn keyword cssFontAttr contained larger smaller
269syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000270
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200271" font-family attributes
272syn match cssFontAttr contained "\<\(sans-\)\=serif\>"
273syn keyword cssFontAttr contained Antiqua Arial Black Book Charcoal Comic Courier Dingbats Gadget Geneva Georgia Grande Helvetica Impact Linotype Lucida MS Monaco Neue New Palatino Roboto Roman Symbol Tahoma Times Trebuchet Unicode Verdana Webdings Wingdings York Zapf
274syn keyword cssFontAttr contained cursive fantasy monospace
Bram Moolenaar071d4272004-06-13 20:20:40 +0000275
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200276" font-feature-settings attributes
277syn keyword cssFontAttr contained on off
278
279" font-stretch attributes
280syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
281
282" font-style attributes
283syn keyword cssFontAttr contained italic oblique
284
285" font-variant-caps attributes
286syn match cssFontAttr contained "\<\(all-\)\=\(small-\|petite-\|titling-\)caps\>"
287syn keyword cssFontAttr contained unicase
288
289" font-weight attributes
290syn keyword cssFontAttr contained bold bolder lighter
291"------------------------------------------------
292
293" Webkit specific property/attributes
294syn match cssFontProp contained "\<font-smooth\>"
295syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
296
297syn keyword cssGeneratedContentProp contained quotes crop
Bram Moolenaard09acef2012-09-21 14:54:30 +0200298syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
299syn match cssGeneratedContentProp contained "\<move-to\>"
300syn match cssGeneratedContentProp contained "\<page-policy\>"
301syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
302
303
304syn match cssGridProp contained "\<grid-\(columns\|rows\)\>"
305
306syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
307
308syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
309syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
310syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
311syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
312syn keyword cssListAttr contained disc circle square hebrew armenian georgian
313syn keyword cssListAttr contained inside outside
314
Bram Moolenaard09acef2012-09-21 14:54:30 +0200315syn match cssMultiColumnProp contained "\<column\(-\(\break-\(after\|before\)\|count\|gap\|rule\(-\(color\|style\|width\)\)\=\)\|span\|width\)\=\>"
316
Bram Moolenaard09acef2012-09-21 14:54:30 +0200317syn keyword cssPositioningProp contained bottom clear clip display float left
318syn keyword cssPositioningProp contained position right top visibility
319syn match cssPositioningProp contained "\<z-index\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200320syn keyword cssPositioningAttr contained block compact
321syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200322syn keyword cssPositioningAttr contained left right both
323syn match cssPositioningAttr contained "\<list-item\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200324syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200325syn keyword cssPositioningAttr contained static relative absolute fixed
326
327syn match cssPrintProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
328syn keyword cssPrintProp contained orphans widows
329syn keyword cssPrintAttr contained landscape portrait crop cross always avoid
330
331syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
332syn keyword cssTableAttr contained fixed collapse separate show hide once always
333
334
335syn keyword cssTextProp contained color direction
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200337syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200338syn match cssTextProp contained "\<word-\(break\|\wrap\)\>"
339syn match cssTextProp contained "\<white-space\>"
340syn match cssTextProp contained "\<hanging-punctuation\>"
341syn match cssTextProp contained "\<punctuation-trim\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342syn match cssTextAttr contained "\<line-through\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000343syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200344syn keyword cssTextAttr contained ltr rtl embed nowrap
Bram Moolenaar071d4272004-06-13 20:20:40 +0000345syn keyword cssTextAttr contained underline overline blink sub super middle
Bram Moolenaard09acef2012-09-21 14:54:30 +0200346syn keyword cssTextAttr contained capitalize uppercase lowercase
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200347syn keyword cssTextAttr contained justify baseline sub super
348syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed
Bram Moolenaard09acef2012-09-21 14:54:30 +0200349syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
350syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
351syn keyword cssTextAttr contained start end adjacent
352syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
353syn keyword cssTextAttr contained distribute kashida first last
354syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
355syn match cssTextAttr contained "\<break-all\>"
356syn match cssTextAttr contained "\<break-word\>"
357syn keyword cssTextAttr contained hyphenate
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200358syn match cssTextAttr contained "\<bidi-override\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359
Bram Moolenaard09acef2012-09-21 14:54:30 +0200360syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
361syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
362syn match cssTransformProp contained "\<backface-visibility\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000363
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200364" CSS Transitions
365" http://www.w3.org/TR/css3-transitions/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200366syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000367
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200368" transition-time-function attributes
369syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
370syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
371syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
372"------------------------------------------------
373" CSS Basic User Interface Module Level 3 (CSS3 UI)
374" http://www.w3.org/TR/css3-ui/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200375syn match cssUIProp contained "\<box-sizing\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200376syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
377
378syn keyword cssUIProp contained cursor
379syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
380syn keyword cssUIAttr contained crosshair help move pointer alias copy
381syn keyword cssUIAttr contained progress wait text cell move
382syn match cssUIAttr contained "\<context-menu\>"
383syn match cssUIAttr contained "\<no-drop\>"
384syn match cssUIAttr contained "\<not-allowed\>"
385syn match cssUIAttr contained "\<all-scroll\>"
386syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
387syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
388
389syn match cssUIProp contained "\<ime-mode\>"
390syn keyword cssUIAttr contained active inactive disabled
391
392syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
393syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
394syn keyword cssUIAttr contained invert
395
396syn keyword cssUIProp contained icon resize
397syn keyword cssUIAttr contained both horizontal vertical
398
399syn match cssUIProp contained "\<text-overflow\>"
400syn keyword cssUIAttr contained clip ellipsis
401
402" Already highlighted Props: font content
403"------------------------------------------------
404" Webkit/iOS specific attributes
405syn match cssUIAttr contained '\(preserve-3d\)'
406" IE specific attributes
407syn match cssIEUIAttr contained '\(bicubic\)'
408
409" Webkit/iOS specific properties
410syn match cssUIProp contained '\(tap-highlight-color\|user-select\|touch-callout\)'
411" IE specific properties
412syn match cssIEUIProp contained '\(interpolation-mode\|zoom\|filter\)'
413
414" Webkit/Firebox specific properties/attributes
415syn keyword cssUIProp contained appearance
416syn keyword cssUIAttr contained window button field icon document menu
417
Bram Moolenaar071d4272004-06-13 20:20:40 +0000418
419syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200420syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000421syn keyword cssAuralProp contained volume during azimuth elevation stress richness
422syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
423syn keyword cssAuralAttr contained silent
424syn match cssAuralAttr contained "\<spell-out\>"
425syn keyword cssAuralAttr contained non mix
426syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
427syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
428syn keyword cssAuralAttr contained leftwards rightwards behind
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200429syn keyword cssAuralAttr contained below level above lower higher
430syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000431syn keyword cssAuralAttr contained faster slower
432syn keyword cssAuralAttr contained male female child code digits continuous
433
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200434" mobile text
435syn match cssMobileTextProp contained "\<text-size-adjust\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200436
Bram Moolenaar071d4272004-06-13 20:20:40 +0000437
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200438
Bram Moolenaar071d4272004-06-13 20:20:40 +0000439syn match cssBraces contained "[{}]"
440syn match cssError contained "{@<>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200441syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks keepend fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000442syn match cssBraceError "}"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200443syn match cssAttrComma ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000444
Bram Moolenaard09acef2012-09-21 14:54:30 +0200445" Pseudo class
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200446" http://www.w3.org/TR/css3-selectors/
447syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
448syn keyword cssPseudoClassId contained link visited active hover before after left right
449syn keyword cssPseudoClassId contained root empty target enable disabled checked invalid
450syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
451syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
452syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")"
453" ------------------------------------
454" Vendor specific properties
455syn match cssPseudoClassId contained "\<selection\>"
456syn match cssPseudoClassId contained "\<focus\(-inner\)\=\>"
457syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>"
458
Bram Moolenaar071d4272004-06-13 20:20:40 +0000459
Bram Moolenaard09acef2012-09-21 14:54:30 +0200460" Comment
Bram Moolenaar29c34722007-05-12 15:34:06 +0000461syn region cssComment start="/\*" end="\*/" contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000462
463syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
464syn match cssSpecialCharQQ +\\"+ contained
465syn match cssSpecialCharQ +\\'+ contained
466syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
467syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
Bram Moolenaard09acef2012-09-21 14:54:30 +0200468
469" Vendor Prefix
470syn match cssVendor contained "\(-\(webkit\|moz\|o\|ms\)-\)"
471
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200472" Various CSS Hack characters
473" In earlier versions of IE (6 and 7), one can prefix property names
474" with a _ or * to isolate those definitions to particular versions of IE
475" This is purely decorative and therefore we assign to the same highlight
476" group to cssVendor, for more information:
477" http://www.paulirish.com/2009/browser-specific-css-hacks/
478syn match cssHacks contained /\(_\|*\)/
479
480" Misc highlight groups
481syntax match cssUnitDecorators /\(#\|-\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained
482syntax match cssNoise contained /\(:\|;\|\/\)/
483
484" Attr Enhance
485" Some keywords are both Prop and Attr, so we have to handle them
486syn region cssAttrRegion start=/:/ end=/;/ contained keepend contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssTransitionHackProp,cssAttrComma,cssNoise
487
488" Hack for transition
489" The 'transition' Prop has Props after ':'.
490syn region cssAttrRegion start=/transition\s*:/ end=/;/ contained keepend contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssTransitionHackProp,cssAttrComma,cssNoise
491
Bram Moolenaar071d4272004-06-13 20:20:40 +0000492
493if main_syntax == "css"
494 syn sync minlines=10
495endif
496
497" Define the default highlighting.
498" For version 5.7 and earlier: only when not done already
499" For version 5.8 and later: only when an item doesn't have highlighting yet
500if version >= 508 || !exists("did_css_syn_inits")
501 if version < 508
502 let did_css_syn_inits = 1
503 command -nargs=+ HiLink hi link <args>
504 else
505 command -nargs=+ HiLink hi def link <args>
506 endif
507
508 HiLink cssComment Comment
Bram Moolenaard09acef2012-09-21 14:54:30 +0200509 HiLink cssVendor Comment
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200510 HiLink cssHacks Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000511 HiLink cssTagName Statement
Bram Moolenaard09acef2012-09-21 14:54:30 +0200512 HiLink cssDeprecated Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000513 HiLink cssSelectorOp Special
514 HiLink cssSelectorOp2 Special
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200515 HiLink cssAttrComma Special
Bram Moolenaard09acef2012-09-21 14:54:30 +0200516
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200517 HiLink cssAnimationProp cssProp
518 HiLink cssBackgroundProp cssProp
519 HiLink cssBorderProp cssProp
520 HiLink cssBoxProp cssProp
521 HiLink cssColorProp cssProp
522 HiLink cssContentForPagedMediaProp cssProp
523 HiLink cssDimensionProp cssProp
524 HiLink cssFlexibleBoxProp cssProp
525 HiLink cssFontProp cssProp
526 HiLink cssGeneratedContentProp cssProp
527 HiLink cssGridProp cssProp
528 HiLink cssHyerlinkProp cssProp
529 HiLink cssLineboxProp cssProp
530 HiLink cssListProp cssProp
531 HiLink cssMarqueeProp cssProp
532 HiLink cssMultiColumnProp cssProp
533 HiLink cssPagedMediaProp cssProp
534 HiLink cssPositioningProp cssProp
535 HiLink cssPrintProp cssProp
536 HiLink cssRubyProp cssProp
537 HiLink cssSpeechProp cssProp
538 HiLink cssTableProp cssProp
539 HiLink cssTextProp cssProp
540 HiLink cssTransformProp cssProp
541 HiLink cssTransitionProp cssProp
542 HiLink cssUIProp cssProp
543 HiLink cssIEUIProp cssProp
544 HiLink cssAuralProp cssProp
545 HiLink cssRenderProp cssProp
546 HiLink cssMobileTextProp cssProp
Bram Moolenaard09acef2012-09-21 14:54:30 +0200547
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200548 HiLink cssAnimationAttr cssAttr
549 HiLink cssBackgroundAttr cssAttr
550 HiLink cssBorderAttr cssAttr
551 HiLink cssBoxAttr cssAttr
552 HiLink cssContentForPagedMediaAttr cssAttr
553 HiLink cssDimensionAttr cssAttr
554 HiLink cssFlexibleBoxAttr cssAttr
555 HiLink cssFontAttr cssAttr
556 HiLink cssGeneratedContentAttr cssAttr
557 HiLink cssGridAttr cssAttr
558 HiLink cssHyerlinkAttr cssAttr
559 HiLink cssLineboxAttr cssAttr
560 HiLink cssListAttr cssAttr
561 HiLink cssMarginAttr cssAttr
562 HiLink cssMarqueeAttr cssAttr
563 HiLink cssMultiColumnAttr cssAttr
564 HiLink cssPaddingAttr cssAttr
565 HiLink cssPagedMediaAttr cssAttr
566 HiLink cssPositioningAttr cssAttr
567 HiLink cssGradientAttr cssAttr
568 HiLink cssPrintAttr cssAttr
569 HiLink cssRubyAttr cssAttr
570 HiLink cssSpeechAttr cssAttr
571 HiLink cssTableAttr cssAttr
572 HiLink cssTextAttr cssAttr
573 HiLink cssTransformAttr cssAttr
574 HiLink cssTransitionAttr cssAttr
575 HiLink cssUIAttr cssAttr
576 HiLink cssIEUIAttr cssAttr
577 HiLink cssAuralAttr cssAttr
578 HiLink cssRenderAttr cssAttr
579 HiLink cssCommonAttr cssAttr
Bram Moolenaard09acef2012-09-21 14:54:30 +0200580
Bram Moolenaar071d4272004-06-13 20:20:40 +0000581 HiLink cssPseudoClassId PreProc
582 HiLink cssPseudoClassLang Constant
583 HiLink cssValueLength Number
584 HiLink cssValueInteger Number
585 HiLink cssValueNumber Number
586 HiLink cssValueAngle Number
587 HiLink cssValueTime Number
588 HiLink cssValueFrequency Number
589 HiLink cssFunction Constant
590 HiLink cssURL String
591 HiLink cssFunctionName Function
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200592 HiLink cssFunctionComma Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000593 HiLink cssColor Constant
594 HiLink cssIdentifier Function
595 HiLink cssInclude Include
596 HiLink cssImportant Special
597 HiLink cssBraces Function
598 HiLink cssBraceError Error
599 HiLink cssError Error
600 HiLink cssInclude Include
601 HiLink cssUnicodeEscape Special
602 HiLink cssStringQQ String
603 HiLink cssStringQ String
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200604 HiLink cssAttributeSelector String
Bram Moolenaar071d4272004-06-13 20:20:40 +0000605 HiLink cssMedia Special
606 HiLink cssMediaType Special
607 HiLink cssMediaComma Normal
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200608 HiLink cssMediaFeature Normal
609 HiLink cssMediaKeyword Statement
610 HiLink cssMediaKeyword2 Statement
611 HiLink cssMediaProp cssProp
612 HiLink cssMediaAttr cssAttr
613 HiLink cssPage Special
614 HiLink cssPagePseudo PreProc
615 HiLink cssPageHeaderProp PreProc
616 HiLink cssPageProp cssProp
617 HiLink cssKeyFrame Special
618 HiLink cssKeyFrameSelector Constant
Bram Moolenaar071d4272004-06-13 20:20:40 +0000619 HiLink cssFontDescriptor Special
620 HiLink cssFontDescriptorFunction Constant
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200621 HiLink cssFontDescriptorProp cssProp
622 HiLink cssFontDescriptorAttr cssAttr
Bram Moolenaar071d4272004-06-13 20:20:40 +0000623 HiLink cssUnicodeRange Constant
Bram Moolenaar29c34722007-05-12 15:34:06 +0000624 HiLink cssClassName Function
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200625 HiLink cssProp StorageClass
626 HiLink cssAttr Constant
627 HiLink cssUnitDecorators Number
628 HiLink cssNoise Noise
Bram Moolenaar071d4272004-06-13 20:20:40 +0000629 delcommand HiLink
630endif
631
632let b:current_syntax = "css"
633
634if main_syntax == 'css'
635 unlet main_syntax
636endif
637
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200638let &cpo = s:cpo_save
639unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000640" vim: ts=8
641