blob: f4d09cfa4e47aea4b232462db22255851fda19fb [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:
Bram Moolenaare7b1ea02020-08-07 19:54:59 +02004" Jules Wang <w.jq0722@gmail.com>
Bram Moolenaar22863042021-10-16 15:23:36 +01005" Claudio Fleiner <claudio@fleiner.com>
Bram Moolenaard09acef2012-09-21 14:54:30 +02006" Yeti (Add full CSS2, HTML4 support)
7" Nikolai Weibull (Add CSS2 support)
Bram Moolenaar22863042021-10-16 15:23:36 +01008" URL: https://github.com/vim-language-dept/css-syntax.vim
Bram Moolenaare7b1ea02020-08-07 19:54:59 +02009" Maintainer: Jay Sitter <jay@jaysitter.com>
Jay Sittere8449032024-03-04 16:19:48 +010010" Last Change: 2024 Mar 2
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020012" quit when a syntax file was already loaded
Bram Moolenaar071d4272004-06-13 20:20:40 +000013if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020014 if exists("b:current_syntax")
Bram Moolenaare2db6952013-07-24 19:53:36 +020015 finish
16 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000017 let main_syntax = 'css'
Bram Moolenaare2db6952013-07-24 19:53:36 +020018elseif exists("b:current_syntax") && b:current_syntax == "css"
19 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000020endif
21
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020022let s:cpo_save = &cpo
23set cpo&vim
24
Bram Moolenaar071d4272004-06-13 20:20:40 +000025syn case ignore
Bram Moolenaar22863042021-10-16 15:23:36 +010026" Add dash to allowed keyword characters.
27syn iskeyword @,48-57,_,192-255,-
Bram Moolenaar071d4272004-06-13 20:20:40 +000028
Bram Moolenaarf2571c62015-06-09 19:44:55 +020029" HTML4 tags
30syn keyword cssTagName abbr address area a b base
31syn keyword cssTagName bdo blockquote body br button
32syn keyword cssTagName caption cite code col colgroup dd del
33syn keyword cssTagName dfn div dl dt em fieldset form
34syn keyword cssTagName h1 h2 h3 h4 h5 h6 head hr html img i
35syn keyword cssTagName iframe input ins isindex kbd label legend li
36syn keyword cssTagName link map menu meta noscript ol optgroup
Bram Moolenaar22863042021-10-16 15:23:36 +010037syn keyword cssTagName option p param picture pre q s samp script small
Bram Moolenaarf2571c62015-06-09 19:44:55 +020038syn keyword cssTagName span strong sub sup tbody td
39syn keyword cssTagName textarea tfoot th thead title tr ul u var
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020040syn keyword cssTagName object svg
Bram Moolenaarf2571c62015-06-09 19:44:55 +020041syn match cssTagName /\<select\>\|\<style\>\|\<table\>/
Bram Moolenaard09acef2012-09-21 14:54:30 +020042
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020043" 34 HTML5 tags
44syn keyword cssTagName article aside audio bdi canvas command data
45syn keyword cssTagName datalist details dialog embed figcaption figure footer
46syn keyword cssTagName header hgroup keygen main mark menuitem meter nav
Bram Moolenaard09acef2012-09-21 14:54:30 +020047syn keyword cssTagName output progress rt rp ruby section
48syn keyword cssTagName source summary time track video wbr
49
50" Tags not supported in HTML5
Bram Moolenaarf2571c62015-06-09 19:44:55 +020051" acronym applet basefont big center dir
52" font frame frameset noframes strike tt
Bram Moolenaard09acef2012-09-21 14:54:30 +020053
Bram Moolenaar071d4272004-06-13 20:20:40 +000054syn match cssTagName "\*"
55
Bram Moolenaard09acef2012-09-21 14:54:30 +020056" selectors
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020057syn match cssSelectorOp "[,>+~]"
Bram Moolenaard09acef2012-09-21 14:54:30 +020058syn match cssSelectorOp2 "[~|^$*]\?=" contained
Bram Moolenaarbaca7f72013-09-22 14:42:24 +020059syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
Bram Moolenaard09acef2012-09-21 14:54:30 +020061" .class and #id
Bram Moolenaar369b6f52017-01-17 12:22:32 +010062syn match cssClassName "\.-\=[A-Za-z_][A-Za-z0-9_-]*" contains=cssClassNameDot
Bram Moolenaardfb18412013-12-11 18:53:29 +010063syn match cssClassNameDot contained '\.'
Bram Moolenaard09acef2012-09-21 14:54:30 +020064
Bram Moolenaara5792f52005-11-23 21:25:05 +000065try
Bram Moolenaar4f4d51a2020-10-11 13:57:40 +020066syn 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 Moolenaarbaca7f72013-09-22 14:42:24 +020071" digits
72syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
73syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
Bram Moolenaare7b1ea02020-08-07 19:54:59 +020074syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\|ch\)\>" contains=cssUnitDecorators
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +010075syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators
Bram Moolenaarf2571c62015-06-09 19:44:55 +020076syn 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 Moolenaar3a0d8092012-10-21 03:02:54 +020080" The 16 basic color names
Bram Moolenaar071d4272004-06-13 20:20:40 +000081syn 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 +020082
83" 130 more color names
84syn keyword cssColor contained aliceblue antiquewhite aquamarine azure
85syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood
86syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
Bram Moolenaarf2571c62015-06-09 19:44:55 +020087syn match cssColor contained /\<dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)\>/
88syn match cssColor contained /\<dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)\>/
89syn match cssColor contained /\<darkslate\(blue\|gray\|grey\)\>/
90syn match cssColor contained /\<dark\(turquoise\|violet\)\>/
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020091syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick
92syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold
93syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink
94syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen
95syn keyword cssColor contained lemonchiffon limegreen linen magenta
Bram Moolenaarf2571c62015-06-09 19:44:55 +020096syn match cssColor contained /\<light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)\>/
97syn match cssColor contained /\<light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)\>/
98syn match cssColor contained /\<light\(slategray\|slategrey\|steelblue\)\>/
99syn match cssColor contained /\<medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)\>/
100syn match cssColor contained /\<medium\(slateblue\|springgreen\|turquoise\|violetred\)\>/
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200101syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite
102syn keyword cssColor contained oldlace olivedrab orange orangered orchid
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200103syn match cssColor contained /\<pale\(goldenrod\|green\|turquoise\|violetred\)\>/
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200104syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100105syn keyword cssColor contained rosybrown royalblue rebeccapurple saddlebrown salmon
106syn keyword cssColor contained sandybrown seagreen seashell sienna skyblue slateblue
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200107syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan
108syn keyword cssColor contained thistle tomato turquoise violet wheat
109syn keyword cssColor contained whitesmoke yellowgreen
110
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200111" FIXME: These are actually case-insensitive too, but (a) specs recommend using
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112" mixed-case (b) it's hard to highlight the word `Background' correctly in
113" all situations
114syn case match
115syn 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
116syn case ignore
Bram Moolenaard09acef2012-09-21 14:54:30 +0200117
118syn match cssImportant contained "!\s*important\>"
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000119syn match cssCustomProp contained "\<--[a-zA-Z0-9-_]*\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200120
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121syn match cssColor contained "\<transparent\>"
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200122syn match cssColor contained "\<currentColor\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123syn match cssColor contained "\<white\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100124syn match cssColor contained "#\x\{3,4\}\>" contains=cssUnitDecorators
125syn match cssColor contained "#\x\{6\}\>" contains=cssUnitDecorators
126syn match cssColor contained "#\x\{8\}\>" contains=cssUnitDecorators
Bram Moolenaard09acef2012-09-21 14:54:30 +0200127
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100128syn region cssURL contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000129syn region cssMathGroup contained matchgroup=cssMathParens start="(" end=")" containedin=cssFunction,cssMathGroup contains=cssCustomProp,cssValue.*,cssFunction,cssColor,cssStringQ,cssStringQQ oneline
Jay Sittere8449032024-03-04 16:19:48 +0100130syn region cssFunction contained matchgroup=cssFunctionName start="\<\(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,cssURL,cssColor,cssStringQ,cssStringQQ oneline
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200131syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma
132syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
Bram Moolenaar22863042021-10-16 15:23:36 +0100133syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\|conic-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200134syn 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
Bram Moolenaare7b1ea02020-08-07 19:54:59 +0200135syn region cssFunction contained matchgroup=cssFunctionName start="\<\(blur\|brightness\|contrast\|drop-shadow\|grayscale\|hue-rotate\|invert\|opacity\|saturate\|sepia\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200136syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
137syn match cssFunctionComma contained ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000138
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200139" Common Prop and Attr
140syn keyword cssCommonAttr contained auto none inherit all default normal
141syn keyword cssCommonAttr contained top bottom center stretch hidden visible
Bram Moolenaare7b1ea02020-08-07 19:54:59 +0200142syn match cssCommonAttr contained "\<\(max-\|min-\|fit-\)content\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200143"------------------------------------------------
144" CSS Animations
145" http://www.w3.org/TR/css3-animations/
Bram Moolenaardfb18412013-12-11 18:53:29 +0100146syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\|iteration-count\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000147
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200148" animation-direction attributes
149syn keyword cssAnimationAttr contained alternate reverse
150syn match cssAnimationAttr contained "\<alternate-reverse\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200151
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200152" animation-fill-mode attributes
153syn keyword cssAnimationAttr contained forwards backwards both
Bram Moolenaard09acef2012-09-21 14:54:30 +0200154
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200155" animation-play-state attributes
156syn keyword cssAnimationAttr contained running paused
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200157
158" animation-iteration-count attributes
159syn keyword cssAnimationAttr contained infinite
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200160"------------------------------------------------
161" CSS Backgrounds and Borders Module Level 3
162" http://www.w3.org/TR/css3-background/
163syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>"
164" background-attachment attributes
165syn keyword cssBackgroundAttr contained scroll fixed local
Bram Moolenaard09acef2012-09-21 14:54:30 +0200166
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200167" background-position attributes
168syn keyword cssBackgroundAttr contained left center right top bottom
Bram Moolenaard09acef2012-09-21 14:54:30 +0200169
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200170" background-repeat attributes
Bram Moolenaard09acef2012-09-21 14:54:30 +0200171syn match cssBackgroundAttr contained "\<no-repeat\>"
172syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200173
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200174" background-size attributes
175syn keyword cssBackgroundAttr contained cover contain
Bram Moolenaard09acef2012-09-21 14:54:30 +0200176
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200177syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
178syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>"
Jay Sittere8449032024-03-04 16:19:48 +0100179syn match cssBorderProp contained "\<border-\(inline\|block\)\(-\(start\|end\)\)\=\(-\(style\|width\|color\)\)\=\>"
180syn match cssBorderProp contained "\<border-\(start\|end\)-\(start\|end\)-radius\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200181syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
182syn match cssBorderProp contained "\<box-decoration-break\>"
183syn match cssBorderProp contained "\<box-shadow\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200184
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200185" border-image attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100186syn keyword cssBorderAttr contained stretch round fill
Bram Moolenaard09acef2012-09-21 14:54:30 +0200187
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200188" border-style attributes
189syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
190
191" border-width attributes
192syn keyword cssBorderAttr contained thin thick medium
193
194" box-decoration-break attributes
195syn keyword cssBorderAttr contained clone slice
196"------------------------------------------------
197
198syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
199syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
Jay Sittere8449032024-03-04 16:19:48 +0100200syn match cssBoxProp contained "\<\(margin\|padding\)\(-\(inline\|block\)\(-\(start\|end\)\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200201syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100202syn match cssBoxProp contained "\<rotation\(-point\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200203syn keyword cssBoxAttr contained visible hidden scroll auto
204syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
205
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200206syn keyword cssCascadeProp contained all
207syn keyword cssCascadeAttr contained initial unset revert
208
Bram Moolenaard09acef2012-09-21 14:54:30 +0200209syn keyword cssColorProp contained opacity
210syn match cssColorProp contained "\<color-profile\>"
211syn match cssColorProp contained "\<rendering-intent\>"
212
213
214syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
215syn keyword cssDimensionProp contained height
216syn keyword cssDimensionProp contained width
217
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100218" CSS Flexible Box Layout Module Level 1
219" http://www.w3.org/TR/css3-flexbox/
220" CSS Box Alignment Module Level 3
221" http://www.w3.org/TR/css-align-3/
222syn match cssFlexibleBoxProp contained "\<flex\(-\(direction\|wrap\|flow\|grow\|shrink\|basis\)\)\=\>"
223syn match cssFlexibleBoxProp contained "\<\(align\|justify\)\(-\(items\|self\|content\)\)\=\>"
224syn keyword cssFlexibleBoxProp contained order
225
226syn match cssFlexibleBoxAttr contained "\<\(row\|column\|wrap\)\(-reverse\)\=\>"
227syn keyword cssFlexibleBoxAttr contained nowrap stretch baseline center
228syn match cssFlexibleBoxAttr contained "\<flex\(-\(start\|end\)\)\=\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100229syn match cssFlexibleBoxAttr contained "\<space\(-\(between\|around\|evenly\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200230
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200231" CSS Fonts Module Level 3
232" http://www.w3.org/TR/css-fonts-3/
Jay Sittere8449032024-03-04 16:19:48 +0100233syn match cssFontProp contained "\<font\(-\(display\|family\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>"
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200234
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200235" font attributes
236syn keyword cssFontAttr contained icon menu caption
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237syn match cssFontAttr contained "\<message-box\>"
238syn match cssFontAttr contained "\<status-bar\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200239syn keyword cssFontAttr contained larger smaller
240syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100241syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200242" font-family attributes
Bram Moolenaar22863042021-10-16 15:23:36 +0100243syn keyword cssFontAttr contained sans-serif serif cursive fantasy monospace
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200244" font-feature-settings attributes
245syn keyword cssFontAttr contained on off
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200246" font-stretch attributes
247syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200248" font-style attributes
249syn keyword cssFontAttr contained italic oblique
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200250" font-synthesis attributes
251syn keyword cssFontAttr contained weight style
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200252" font-weight attributes
253syn keyword cssFontAttr contained bold bolder lighter
Jay Sittere8449032024-03-04 16:19:48 +0100254" font-display attributes
255syn keyword cssFontAttr contained auto block swap fallback optional
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200256" TODO: font-variant-* attributes
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200257"------------------------------------------------
258
259" Webkit specific property/attributes
260syn match cssFontProp contained "\<font-smooth\>"
261syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
262
Bram Moolenaardfb18412013-12-11 18:53:29 +0100263
264" CSS Multi-column Layout Module
265" http://www.w3.org/TR/css3-multicol/
266syn match cssMultiColumnProp contained "\<break-\(after\|before\|inside\)\>"
267syn match cssMultiColumnProp contained "\<column-\(count\|fill\|gap\|rule\(-\(color\|style\|width\)\)\=\|span\|width\)\>"
268syn keyword cssMultiColumnProp contained columns
269syn keyword cssMultiColumnAttr contained balance medium
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100270syn keyword cssMultiColumnAttr contained always left right page column
271syn match cssMultiColumnAttr contained "\<avoid\(-\(page\|column\)\)\=\>"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100272
273" http://www.w3.org/TR/css3-break/#page-break
274syn match cssMultiColumnProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
275
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100276" http://www.w3.org/TR/SVG11/interact.html
277syn match cssInteractProp contained "\<pointer-events\>"
278syn match cssInteractAttr contained "\<\(visible\)\=\(Painted\|Fill\|Stroke\)\=\>"
279
Bram Moolenaardfb18412013-12-11 18:53:29 +0100280" TODO find following items in w3c docs.
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200281syn keyword cssGeneratedContentProp contained quotes crop
Bram Moolenaard09acef2012-09-21 14:54:30 +0200282syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
283syn match cssGeneratedContentProp contained "\<move-to\>"
284syn match cssGeneratedContentProp contained "\<page-policy\>"
285syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
286
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100287" https://www.w3.org/TR/css-grid-1/
288syn match cssGridProp contained "\<grid\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200289syn match cssGridProp contained "\<grid-template\(-\(columns\|rows\|areas\)\)\=\>"
Jay Sittere8449032024-03-04 16:19:48 +0100290syn match cssGridProp contained "\<\(grid-\)\=\(column\|row\)\(-\(start\|end\|gap\)\)\=\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100291syn match cssGridProp contained "\<grid-\(area\|gap\)\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100292syn match cssGridProp contained "\<gap\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200293syn match cssGridProp contained "\<grid-auto-\(flow\|rows\|columns\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200294
295syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
296
297syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
298syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
299syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
300syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
301syn keyword cssListAttr contained disc circle square hebrew armenian georgian
302syn keyword cssListAttr contained inside outside
303
Bram Moolenaar22863042021-10-16 15:23:36 +0100304" object-fit https://www.w3.org/TR/css-images-3/#the-object-fit
305syn match cssObjectProp contained "\<object-\(fit\|position\)\>"
306syn keyword cssObjectAttr contained fill contain cover scale-down
307
Bram Moolenaard09acef2012-09-21 14:54:30 +0200308syn keyword cssPositioningProp contained bottom clear clip display float left
309syn keyword cssPositioningProp contained position right top visibility
310syn match cssPositioningProp contained "\<z-index\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100311syn keyword cssPositioningAttr contained block compact grid
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200312syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200313syn keyword cssPositioningAttr contained left right both
314syn match cssPositioningAttr contained "\<list-item\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100315syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\|grid\|flex\)\)\=\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200316syn match cssPositioningAttr contained "\<flow\(-root\)\=\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100317syn keyword cssPositioningAttr contained static relative absolute fixed subgrid sticky
Bram Moolenaard09acef2012-09-21 14:54:30 +0200318
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100319syn keyword cssPrintAttr contained landscape portrait crop cross always
Bram Moolenaard09acef2012-09-21 14:54:30 +0200320
321syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
322syn keyword cssTableAttr contained fixed collapse separate show hide once always
323
324
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200325syn keyword cssTextProp contained color direction hyphens
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200327syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200328syn match cssTextProp contained "\<\(word\|line\)-break\|\(overflow\|word\)-wrap\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200329syn match cssTextProp contained "\<white-space\>"
330syn match cssTextProp contained "\<hanging-punctuation\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200331syn match cssTextProp contained "\<tab-size\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200332syn match cssTextProp contained "\<punctuation-trim\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333syn match cssTextAttr contained "\<line-through\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200335syn keyword cssTextAttr contained ltr rtl embed nowrap
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336syn keyword cssTextAttr contained underline overline blink sub super middle
Bram Moolenaard09acef2012-09-21 14:54:30 +0200337syn keyword cssTextAttr contained capitalize uppercase lowercase
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200338syn keyword cssTextAttr contained justify baseline sub super
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200339syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed geometricPrecision
Bram Moolenaard09acef2012-09-21 14:54:30 +0200340syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
341syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
342syn keyword cssTextAttr contained start end adjacent
343syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
344syn keyword cssTextAttr contained distribute kashida first last
345syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
346syn match cssTextAttr contained "\<break-all\>"
347syn match cssTextAttr contained "\<break-word\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200348syn keyword cssTextAttr contained manual
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200349syn match cssTextAttr contained "\<bidi-override\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000350
Bram Moolenaard09acef2012-09-21 14:54:30 +0200351syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
352syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
353syn match cssTransformProp contained "\<backface-visibility\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000354
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200355" CSS Transitions
356" http://www.w3.org/TR/css3-transitions/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200357syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000358
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200359" transition-time-function attributes
360syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
361syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
362syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
363"------------------------------------------------
364" CSS Basic User Interface Module Level 3 (CSS3 UI)
365" http://www.w3.org/TR/css3-ui/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200366syn match cssUIProp contained "\<box-sizing\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200367syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
368
369syn keyword cssUIProp contained cursor
370syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
371syn keyword cssUIAttr contained crosshair help move pointer alias copy
372syn keyword cssUIAttr contained progress wait text cell move
373syn match cssUIAttr contained "\<context-menu\>"
374syn match cssUIAttr contained "\<no-drop\>"
375syn match cssUIAttr contained "\<not-allowed\>"
376syn match cssUIAttr contained "\<all-scroll\>"
377syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
378syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
379
380syn match cssUIProp contained "\<ime-mode\>"
381syn keyword cssUIAttr contained active inactive disabled
382
383syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
384syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
385syn keyword cssUIAttr contained invert
386
387syn keyword cssUIProp contained icon resize
388syn keyword cssUIAttr contained both horizontal vertical
389
390syn match cssUIProp contained "\<text-overflow\>"
391syn keyword cssUIAttr contained clip ellipsis
392
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100393syn match cssUIProp contained "\<image-rendering\>"
394syn keyword cssUIAttr contained pixellated
395syn match cssUIAttr contained "\<crisp-edges\>"
396
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200397"------------------------------------------------
398" Webkit/iOS specific attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100399syn match cssUIAttr contained '\<preserve-3d\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200400" IE specific attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100401syn match cssIEUIAttr contained '\<bicubic\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200402
403" Webkit/iOS specific properties
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000404syn match cssUIProp contained '\<\(tap-highlight-color\|user-select\|touch-callout\)\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200405" IE specific properties
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000406syn match cssIEUIProp contained '\<\(interpolation-mode\|zoom\|filter\)\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200407
408" Webkit/Firebox specific properties/attributes
409syn keyword cssUIProp contained appearance
410syn keyword cssUIAttr contained window button field icon document menu
411
Bram Moolenaar071d4272004-06-13 20:20:40 +0000412
413syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200414syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000415syn keyword cssAuralProp contained volume during azimuth elevation stress richness
416syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
417syn keyword cssAuralAttr contained silent
418syn match cssAuralAttr contained "\<spell-out\>"
419syn keyword cssAuralAttr contained non mix
420syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
421syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
422syn keyword cssAuralAttr contained leftwards rightwards behind
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200423syn keyword cssAuralAttr contained below level above lower higher
424syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000425syn keyword cssAuralAttr contained faster slower
426syn keyword cssAuralAttr contained male female child code digits continuous
427
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200428" mobile text
429syn match cssMobileTextProp contained "\<text-size-adjust\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200430
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200431syn keyword cssMediaProp contained width height orientation scan
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000432syn keyword cssMediaProp contained any-hover any-pointer color-gamut grid hover
433syn keyword cssMediaProp contained overflow-block overflow-inline pointer update
434syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio\>/
435syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-pixel-ratio\>/
436syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-\(height\|width\)\>/
437syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)\>/
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100438syn keyword cssMediaAttr contained portrait landscape progressive interlace
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000439syn keyword cssMediaAttr contained coarse fast fine hover infinite p3 paged
440syn keyword cssMediaAttr contained rec2020 scroll slow srgb
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200441syn match cssKeyFrameProp contained /\(\d\+\(\.\d\+\)\?%\|\(\<from\|to\>\)\)/ nextgroup=cssDefinition
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100442syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition
443syn keyword cssPageProp contained content size
444syn keyword cssPageProp contained orphans widows
445syn keyword cssFontDescriptorProp contained src
446syn match cssFontDescriptorProp contained "\<unicode-range\>"
447" unicode-range attributes
448syn match cssFontDescriptorAttr contained "U+[0-9A-Fa-f?]\+"
449syn match cssFontDescriptorAttr contained "U+\x\+-\x\+"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200450
Bram Moolenaar071d4272004-06-13 20:20:40 +0000451syn match cssBraces contained "[{}]"
452syn match cssError contained "{@<>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200453syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssCustomProp,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000454syn match cssBraceError "}"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200455syn match cssAttrComma ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000456
Bram Moolenaard09acef2012-09-21 14:54:30 +0200457" Pseudo class
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000458" https://www.w3.org/TR/selectors-4/
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200459syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
Jay Sittere8449032024-03-04 16:19:48 +0100460syn keyword cssPseudoClassId contained link visited active hover before after left right
461syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200462syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
463syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000464syn match cssPseudoClassId contained "\<focus\(-within\|-visible\)\=\>"
Jay Sittere8449032024-03-04 16:19:48 +0100465syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200466" ------------------------------------
467" Vendor specific properties
468syn match cssPseudoClassId contained "\<selection\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200469syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>"
470
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200471" Misc highlight groups
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100472syntax match cssUnitDecorators /\(#\|-\|+\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|ch\|rem\|vh\|vw\|vmin\|vmax\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200473syntax match cssNoise contained /\(:\|;\|\/\)/
Bram Moolenaar071d4272004-06-13 20:20:40 +0000474
Bram Moolenaard09acef2012-09-21 14:54:30 +0200475" Comment
Bram Moolenaar18441ae2013-09-24 23:30:38 +0200476syn region cssComment start="/\*" end="\*/" contains=@Spell fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000477
478syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100479syn match cssSpecialCharQQ +\\\\\|\\"+ contained
480syn match cssSpecialCharQ +\\\\\|\\'+ contained
Bram Moolenaar071d4272004-06-13 20:20:40 +0000481syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
482syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
Bram Moolenaard09acef2012-09-21 14:54:30 +0200483
484" Vendor Prefix
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100485syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200486
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200487" Various CSS Hack characters
488" In earlier versions of IE (6 and 7), one can prefix property names
489" with a _ or * to isolate those definitions to particular versions of IE
490" This is purely decorative and therefore we assign to the same highlight
491" group to cssVendor, for more information:
492" http://www.paulirish.com/2009/browser-specific-css-hacks/
493syn match cssHacks contained /\(_\|*\)/
494
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200495" Attr Enhance
496" Some keywords are both Prop and Attr, so we have to handle them
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200497" cssPseudoClassId is hidden by cssAttrRegion, so we add it here. see #69
498syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\|{\)/ contained contains=cssPseudoClassId,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200499
500" Hack for transition
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200501" 'transition' has Props after ':'.
502syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200503
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200504syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100505
506syn keyword cssAtRuleLogical only not and contained
507
508" @media
509" Reference: http://www.w3.org/TR/css3-mediaqueries/
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200510syn region cssAtRule start=/@media\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssComment,cssCustomProp,cssFunctionName nextgroup=cssDefinition
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100511syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained
512
513" @page
514" http://www.w3.org/TR/css3-page/
515syn region cssAtRule start=/@page\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssPagePseudo,cssComment nextgroup=cssDefinition
516syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl
517" @keyframe
518" http://www.w3.org/TR/css3-animations/#keyframes
519syn region cssAtRule start=/@\(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition
520
521syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword,cssURL,cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssMediaType
522syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
523syn region cssAtRule start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
524
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100525" @supports
526" https://www.w3.org/TR/css3-conditional/#at-supports
527syn region cssAtRule start=/@supports\>/ end=/\ze{/ skipwhite skipnl contains=cssAtRuleLogical,cssAttrRegion,css.*Prop,cssValue.*,cssVendor,cssAtKeyword,cssComment nextgroup=cssDefinition
528
Bram Moolenaar071d4272004-06-13 20:20:40 +0000529
530if main_syntax == "css"
531 syn sync minlines=10
532endif
533
534" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200535" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000536
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200537hi def link cssComment Comment
538hi def link cssVendor Comment
539hi def link cssHacks Comment
540hi def link cssTagName Statement
541hi def link cssDeprecated Error
542hi def link cssSelectorOp Special
543hi def link cssSelectorOp2 Special
544hi def link cssAttrComma Special
Bram Moolenaard09acef2012-09-21 14:54:30 +0200545
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200546hi def link cssAnimationProp cssProp
547hi def link cssBackgroundProp cssProp
548hi def link cssBorderProp cssProp
549hi def link cssBoxProp cssProp
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200550hi def link cssCascadeProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200551hi def link cssColorProp cssProp
552hi def link cssContentForPagedMediaProp cssProp
553hi def link cssDimensionProp cssProp
554hi def link cssFlexibleBoxProp cssProp
555hi def link cssFontProp cssProp
556hi def link cssGeneratedContentProp cssProp
557hi def link cssGridProp cssProp
558hi def link cssHyerlinkProp cssProp
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100559hi def link cssInteractProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200560hi def link cssLineboxProp cssProp
561hi def link cssListProp cssProp
562hi def link cssMarqueeProp cssProp
563hi def link cssMultiColumnProp cssProp
564hi def link cssPagedMediaProp cssProp
565hi def link cssPositioningProp cssProp
Bram Moolenaar22863042021-10-16 15:23:36 +0100566hi def link cssObjectProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200567hi def link cssPrintProp cssProp
568hi def link cssRubyProp cssProp
569hi def link cssSpeechProp cssProp
570hi def link cssTableProp cssProp
571hi def link cssTextProp cssProp
572hi def link cssTransformProp cssProp
573hi def link cssTransitionProp cssProp
574hi def link cssUIProp cssProp
575hi def link cssIEUIProp cssProp
576hi def link cssAuralProp cssProp
577hi def link cssRenderProp cssProp
578hi def link cssMobileTextProp cssProp
Bram Moolenaard09acef2012-09-21 14:54:30 +0200579
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200580hi def link cssAnimationAttr cssAttr
581hi def link cssBackgroundAttr cssAttr
582hi def link cssBorderAttr cssAttr
583hi def link cssBoxAttr cssAttr
584hi def link cssContentForPagedMediaAttr cssAttr
585hi def link cssDimensionAttr cssAttr
586hi def link cssFlexibleBoxAttr cssAttr
587hi def link cssFontAttr cssAttr
588hi def link cssGeneratedContentAttr cssAttr
589hi def link cssGridAttr cssAttr
590hi def link cssHyerlinkAttr cssAttr
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100591hi def link cssInteractAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200592hi def link cssLineboxAttr cssAttr
593hi def link cssListAttr cssAttr
594hi def link cssMarginAttr cssAttr
595hi def link cssMarqueeAttr cssAttr
596hi def link cssMultiColumnAttr cssAttr
597hi def link cssPaddingAttr cssAttr
598hi def link cssPagedMediaAttr cssAttr
599hi def link cssPositioningAttr cssAttr
Bram Moolenaar22863042021-10-16 15:23:36 +0100600hi def link cssObjectAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200601hi def link cssGradientAttr cssAttr
602hi def link cssPrintAttr cssAttr
603hi def link cssRubyAttr cssAttr
604hi def link cssSpeechAttr cssAttr
605hi def link cssTableAttr cssAttr
606hi def link cssTextAttr cssAttr
607hi def link cssTransformAttr cssAttr
608hi def link cssTransitionAttr cssAttr
609hi def link cssUIAttr cssAttr
610hi def link cssIEUIAttr cssAttr
611hi def link cssAuralAttr cssAttr
612hi def link cssRenderAttr cssAttr
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200613hi def link cssCascadeAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200614hi def link cssCommonAttr cssAttr
Bram Moolenaard09acef2012-09-21 14:54:30 +0200615
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200616hi def link cssPseudoClassId PreProc
617hi def link cssPseudoClassLang Constant
618hi def link cssValueLength Number
619hi def link cssValueInteger Number
620hi def link cssValueNumber Number
621hi def link cssValueAngle Number
622hi def link cssValueTime Number
623hi def link cssValueFrequency Number
624hi def link cssFunction Constant
625hi def link cssURL String
626hi def link cssFunctionName Function
627hi def link cssFunctionComma Function
628hi def link cssColor Constant
629hi def link cssIdentifier Function
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100630hi def link cssAtRule Include
631hi def link cssAtKeyword PreProc
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200632hi def link cssImportant Special
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200633hi def link cssCustomProp Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200634hi def link cssBraces Function
635hi def link cssBraceError Error
636hi def link cssError Error
637hi def link cssUnicodeEscape Special
638hi def link cssStringQQ String
639hi def link cssStringQ String
640hi def link cssAttributeSelector String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200641hi def link cssMediaType Special
642hi def link cssMediaComma Normal
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100643hi def link cssAtRuleLogical Statement
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200644hi def link cssMediaProp cssProp
645hi def link cssMediaAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200646hi def link cssPagePseudo PreProc
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100647hi def link cssPageMarginProp cssAtKeyword
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200648hi def link cssPageProp cssProp
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100649hi def link cssKeyFrameProp Constant
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200650hi def link cssFontDescriptor Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200651hi def link cssFontDescriptorProp cssProp
652hi def link cssFontDescriptorAttr cssAttr
653hi def link cssUnicodeRange Constant
654hi def link cssClassName Function
655hi def link cssClassNameDot Function
656hi def link cssProp StorageClass
657hi def link cssAttr Constant
658hi def link cssUnitDecorators Number
659hi def link cssNoise Noise
Bram Moolenaar071d4272004-06-13 20:20:40 +0000660
661let b:current_syntax = "css"
662
663if main_syntax == 'css'
664 unlet main_syntax
665endif
666
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200667let &cpo = s:cpo_save
668unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000669
Bram Moolenaar4f4d51a2020-10-11 13:57:40 +0200670" vim: ts=8