blob: f8104ea2c5847ecd58d9f4cc1ece441c3f9589e0 [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>
Bram Moolenaar0e6adf82021-12-16 14:41:10 +000010" Last Change: 2021 Oct 20
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
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200130syn region cssFunction contained matchgroup=cssFunctionName start="\<\(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,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\>"
179syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
180syn match cssBorderProp contained "\<box-decoration-break\>"
181syn match cssBorderProp contained "\<box-shadow\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200182
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200183" border-image attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100184syn keyword cssBorderAttr contained stretch round fill
Bram Moolenaard09acef2012-09-21 14:54:30 +0200185
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200186" border-style attributes
187syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
188
189" border-width attributes
190syn keyword cssBorderAttr contained thin thick medium
191
192" box-decoration-break attributes
193syn keyword cssBorderAttr contained clone slice
194"------------------------------------------------
195
196syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
197syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200198syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100199syn match cssBoxProp contained "\<rotation\(-point\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200200syn keyword cssBoxAttr contained visible hidden scroll auto
201syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
202
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200203syn keyword cssCascadeProp contained all
204syn keyword cssCascadeAttr contained initial unset revert
205
Bram Moolenaard09acef2012-09-21 14:54:30 +0200206syn keyword cssColorProp contained opacity
207syn match cssColorProp contained "\<color-profile\>"
208syn match cssColorProp contained "\<rendering-intent\>"
209
210
211syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
212syn keyword cssDimensionProp contained height
213syn keyword cssDimensionProp contained width
214
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100215" CSS Flexible Box Layout Module Level 1
216" http://www.w3.org/TR/css3-flexbox/
217" CSS Box Alignment Module Level 3
218" http://www.w3.org/TR/css-align-3/
219syn match cssFlexibleBoxProp contained "\<flex\(-\(direction\|wrap\|flow\|grow\|shrink\|basis\)\)\=\>"
220syn match cssFlexibleBoxProp contained "\<\(align\|justify\)\(-\(items\|self\|content\)\)\=\>"
221syn keyword cssFlexibleBoxProp contained order
222
223syn match cssFlexibleBoxAttr contained "\<\(row\|column\|wrap\)\(-reverse\)\=\>"
224syn keyword cssFlexibleBoxAttr contained nowrap stretch baseline center
225syn match cssFlexibleBoxAttr contained "\<flex\(-\(start\|end\)\)\=\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100226syn match cssFlexibleBoxAttr contained "\<space\(-\(between\|around\|evenly\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200227
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200228" CSS Fonts Module Level 3
229" http://www.w3.org/TR/css-fonts-3/
230syn match cssFontProp contained "\<font\(-\(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 +0200231
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200232" font attributes
233syn keyword cssFontAttr contained icon menu caption
Bram Moolenaar071d4272004-06-13 20:20:40 +0000234syn match cssFontAttr contained "\<message-box\>"
235syn match cssFontAttr contained "\<status-bar\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200236syn keyword cssFontAttr contained larger smaller
237syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100238syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200239" font-family attributes
Bram Moolenaar22863042021-10-16 15:23:36 +0100240syn keyword cssFontAttr contained sans-serif serif cursive fantasy monospace
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200241" font-feature-settings attributes
242syn keyword cssFontAttr contained on off
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200243" font-stretch attributes
244syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200245" font-style attributes
246syn keyword cssFontAttr contained italic oblique
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200247" font-synthesis attributes
248syn keyword cssFontAttr contained weight style
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200249" font-weight attributes
250syn keyword cssFontAttr contained bold bolder lighter
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200251" TODO: font-variant-* attributes
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200252"------------------------------------------------
253
254" Webkit specific property/attributes
255syn match cssFontProp contained "\<font-smooth\>"
256syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
257
Bram Moolenaardfb18412013-12-11 18:53:29 +0100258
259" CSS Multi-column Layout Module
260" http://www.w3.org/TR/css3-multicol/
261syn match cssMultiColumnProp contained "\<break-\(after\|before\|inside\)\>"
262syn match cssMultiColumnProp contained "\<column-\(count\|fill\|gap\|rule\(-\(color\|style\|width\)\)\=\|span\|width\)\>"
263syn keyword cssMultiColumnProp contained columns
264syn keyword cssMultiColumnAttr contained balance medium
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100265syn keyword cssMultiColumnAttr contained always left right page column
266syn match cssMultiColumnAttr contained "\<avoid\(-\(page\|column\)\)\=\>"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100267
268" http://www.w3.org/TR/css3-break/#page-break
269syn match cssMultiColumnProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
270
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100271" http://www.w3.org/TR/SVG11/interact.html
272syn match cssInteractProp contained "\<pointer-events\>"
273syn match cssInteractAttr contained "\<\(visible\)\=\(Painted\|Fill\|Stroke\)\=\>"
274
Bram Moolenaardfb18412013-12-11 18:53:29 +0100275" TODO find following items in w3c docs.
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200276syn keyword cssGeneratedContentProp contained quotes crop
Bram Moolenaard09acef2012-09-21 14:54:30 +0200277syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
278syn match cssGeneratedContentProp contained "\<move-to\>"
279syn match cssGeneratedContentProp contained "\<page-policy\>"
280syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
281
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100282" https://www.w3.org/TR/css-grid-1/
283syn match cssGridProp contained "\<grid\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200284syn match cssGridProp contained "\<grid-template\(-\(columns\|rows\|areas\)\)\=\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100285syn match cssGridProp contained "\<grid-\(column\|row\)\(-\(start\|end\|gap\)\)\=\>"
286syn match cssGridProp contained "\<grid-\(area\|gap\)\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100287syn match cssGridProp contained "\<gap\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200288syn match cssGridProp contained "\<grid-auto-\(flow\|rows\|columns\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200289
290syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
291
292syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
293syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
294syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
295syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
296syn keyword cssListAttr contained disc circle square hebrew armenian georgian
297syn keyword cssListAttr contained inside outside
298
Bram Moolenaar22863042021-10-16 15:23:36 +0100299" object-fit https://www.w3.org/TR/css-images-3/#the-object-fit
300syn match cssObjectProp contained "\<object-\(fit\|position\)\>"
301syn keyword cssObjectAttr contained fill contain cover scale-down
302
Bram Moolenaard09acef2012-09-21 14:54:30 +0200303syn keyword cssPositioningProp contained bottom clear clip display float left
304syn keyword cssPositioningProp contained position right top visibility
305syn match cssPositioningProp contained "\<z-index\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100306syn keyword cssPositioningAttr contained block compact grid
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200307syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200308syn keyword cssPositioningAttr contained left right both
309syn match cssPositioningAttr contained "\<list-item\>"
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100310syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\|grid\|flex\)\)\=\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200311syn match cssPositioningAttr contained "\<flow\(-root\)\=\>"
Bram Moolenaar22863042021-10-16 15:23:36 +0100312syn keyword cssPositioningAttr contained static relative absolute fixed subgrid sticky
Bram Moolenaard09acef2012-09-21 14:54:30 +0200313
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100314syn keyword cssPrintAttr contained landscape portrait crop cross always
Bram Moolenaard09acef2012-09-21 14:54:30 +0200315
316syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
317syn keyword cssTableAttr contained fixed collapse separate show hide once always
318
319
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200320syn keyword cssTextProp contained color direction hyphens
Bram Moolenaar071d4272004-06-13 20:20:40 +0000321syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200322syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200323syn match cssTextProp contained "\<\(word\|line\)-break\|\(overflow\|word\)-wrap\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200324syn match cssTextProp contained "\<white-space\>"
325syn match cssTextProp contained "\<hanging-punctuation\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200326syn match cssTextProp contained "\<tab-size\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200327syn match cssTextProp contained "\<punctuation-trim\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000328syn match cssTextAttr contained "\<line-through\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000329syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200330syn keyword cssTextAttr contained ltr rtl embed nowrap
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331syn keyword cssTextAttr contained underline overline blink sub super middle
Bram Moolenaard09acef2012-09-21 14:54:30 +0200332syn keyword cssTextAttr contained capitalize uppercase lowercase
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200333syn keyword cssTextAttr contained justify baseline sub super
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200334syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed geometricPrecision
Bram Moolenaard09acef2012-09-21 14:54:30 +0200335syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
336syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
337syn keyword cssTextAttr contained start end adjacent
338syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
339syn keyword cssTextAttr contained distribute kashida first last
340syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
341syn match cssTextAttr contained "\<break-all\>"
342syn match cssTextAttr contained "\<break-word\>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200343syn keyword cssTextAttr contained manual
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200344syn match cssTextAttr contained "\<bidi-override\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000345
Bram Moolenaard09acef2012-09-21 14:54:30 +0200346syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
347syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
348syn match cssTransformProp contained "\<backface-visibility\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000349
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200350" CSS Transitions
351" http://www.w3.org/TR/css3-transitions/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200352syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000353
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200354" transition-time-function attributes
355syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
356syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
357syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
358"------------------------------------------------
359" CSS Basic User Interface Module Level 3 (CSS3 UI)
360" http://www.w3.org/TR/css3-ui/
Bram Moolenaard09acef2012-09-21 14:54:30 +0200361syn match cssUIProp contained "\<box-sizing\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200362syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
363
364syn keyword cssUIProp contained cursor
365syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
366syn keyword cssUIAttr contained crosshair help move pointer alias copy
367syn keyword cssUIAttr contained progress wait text cell move
368syn match cssUIAttr contained "\<context-menu\>"
369syn match cssUIAttr contained "\<no-drop\>"
370syn match cssUIAttr contained "\<not-allowed\>"
371syn match cssUIAttr contained "\<all-scroll\>"
372syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
373syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
374
375syn match cssUIProp contained "\<ime-mode\>"
376syn keyword cssUIAttr contained active inactive disabled
377
378syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
379syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
380syn keyword cssUIAttr contained invert
381
382syn keyword cssUIProp contained icon resize
383syn keyword cssUIAttr contained both horizontal vertical
384
385syn match cssUIProp contained "\<text-overflow\>"
386syn keyword cssUIAttr contained clip ellipsis
387
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100388syn match cssUIProp contained "\<image-rendering\>"
389syn keyword cssUIAttr contained pixellated
390syn match cssUIAttr contained "\<crisp-edges\>"
391
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200392"------------------------------------------------
393" Webkit/iOS specific attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100394syn match cssUIAttr contained '\<preserve-3d\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200395" IE specific attributes
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100396syn match cssIEUIAttr contained '\<bicubic\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200397
398" Webkit/iOS specific properties
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000399syn match cssUIProp contained '\<\(tap-highlight-color\|user-select\|touch-callout\)\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200400" IE specific properties
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000401syn match cssIEUIProp contained '\<\(interpolation-mode\|zoom\|filter\)\>'
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200402
403" Webkit/Firebox specific properties/attributes
404syn keyword cssUIProp contained appearance
405syn keyword cssUIAttr contained window button field icon document menu
406
Bram Moolenaar071d4272004-06-13 20:20:40 +0000407
408syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200409syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000410syn keyword cssAuralProp contained volume during azimuth elevation stress richness
411syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
412syn keyword cssAuralAttr contained silent
413syn match cssAuralAttr contained "\<spell-out\>"
414syn keyword cssAuralAttr contained non mix
415syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
416syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
417syn keyword cssAuralAttr contained leftwards rightwards behind
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200418syn keyword cssAuralAttr contained below level above lower higher
419syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000420syn keyword cssAuralAttr contained faster slower
421syn keyword cssAuralAttr contained male female child code digits continuous
422
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200423" mobile text
424syn match cssMobileTextProp contained "\<text-size-adjust\>"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200425
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200426syn keyword cssMediaProp contained width height orientation scan
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000427syn keyword cssMediaProp contained any-hover any-pointer color-gamut grid hover
428syn keyword cssMediaProp contained overflow-block overflow-inline pointer update
429syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio\>/
430syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-pixel-ratio\>/
431syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-\(height\|width\)\>/
432syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)\>/
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100433syn keyword cssMediaAttr contained portrait landscape progressive interlace
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000434syn keyword cssMediaAttr contained coarse fast fine hover infinite p3 paged
435syn keyword cssMediaAttr contained rec2020 scroll slow srgb
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200436syn match cssKeyFrameProp contained /\(\d\+\(\.\d\+\)\?%\|\(\<from\|to\>\)\)/ nextgroup=cssDefinition
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100437syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition
438syn keyword cssPageProp contained content size
439syn keyword cssPageProp contained orphans widows
440syn keyword cssFontDescriptorProp contained src
441syn match cssFontDescriptorProp contained "\<unicode-range\>"
442" unicode-range attributes
443syn match cssFontDescriptorAttr contained "U+[0-9A-Fa-f?]\+"
444syn match cssFontDescriptorAttr contained "U+\x\+-\x\+"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200445
Bram Moolenaar071d4272004-06-13 20:20:40 +0000446syn match cssBraces contained "[{}]"
447syn match cssError contained "{@<>"
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200448syn 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 +0000449syn match cssBraceError "}"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200450syn match cssAttrComma ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000451
Bram Moolenaard09acef2012-09-21 14:54:30 +0200452" Pseudo class
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000453" https://www.w3.org/TR/selectors-4/
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200454syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
Adrian Heine né Lang309ded12023-08-20 21:23:18 +0200455syn keyword cssPseudoClassId contained link visited active hover before after left right any-link
456syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid default defined autofill fullscreen host indeterminate in-range modal optional out-of-range picture-in-picture placeholder-shown paused playing read-only read-write required scope
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200457syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
458syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
Bram Moolenaar0e6adf82021-12-16 14:41:10 +0000459syn match cssPseudoClassId contained "\<focus\(-within\|-visible\)\=\>"
Adrian Heine né Lang309ded12023-08-20 21:23:18 +0200460syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(where\|has\|host\|not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200461" ------------------------------------
462" Vendor specific properties
463syn match cssPseudoClassId contained "\<selection\>"
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200464syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>"
465
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200466" Misc highlight groups
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100467syntax 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 +0200468syntax match cssNoise contained /\(:\|;\|\/\)/
Bram Moolenaar071d4272004-06-13 20:20:40 +0000469
Bram Moolenaard09acef2012-09-21 14:54:30 +0200470" Comment
Bram Moolenaar18441ae2013-09-24 23:30:38 +0200471syn region cssComment start="/\*" end="\*/" contains=@Spell fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000472
473syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
Bram Moolenaardfb18412013-12-11 18:53:29 +0100474syn match cssSpecialCharQQ +\\\\\|\\"+ contained
475syn match cssSpecialCharQ +\\\\\|\\'+ contained
Bram Moolenaar071d4272004-06-13 20:20:40 +0000476syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
477syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
Bram Moolenaard09acef2012-09-21 14:54:30 +0200478
479" Vendor Prefix
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100480syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-"
Bram Moolenaard09acef2012-09-21 14:54:30 +0200481
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200482" Various CSS Hack characters
483" In earlier versions of IE (6 and 7), one can prefix property names
484" with a _ or * to isolate those definitions to particular versions of IE
485" This is purely decorative and therefore we assign to the same highlight
486" group to cssVendor, for more information:
487" http://www.paulirish.com/2009/browser-specific-css-hacks/
488syn match cssHacks contained /\(_\|*\)/
489
Bram Moolenaarbaca7f72013-09-22 14:42:24 +0200490" Attr Enhance
491" Some keywords are both Prop and Attr, so we have to handle them
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200492" cssPseudoClassId is hidden by cssAttrRegion, so we add it here. see #69
493syn 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 +0200494
495" Hack for transition
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200496" 'transition' has Props after ':'.
497syn 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 +0200498
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200499syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100500
501syn keyword cssAtRuleLogical only not and contained
502
503" @media
504" Reference: http://www.w3.org/TR/css3-mediaqueries/
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200505syn 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 +0100506syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained
507
508" @page
509" http://www.w3.org/TR/css3-page/
510syn region cssAtRule start=/@page\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssPagePseudo,cssComment nextgroup=cssDefinition
511syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl
512" @keyframe
513" http://www.w3.org/TR/css3-animations/#keyframes
514syn region cssAtRule start=/@\(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition
515
516syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword,cssURL,cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssMediaType
517syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
518syn region cssAtRule start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
519
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100520" @supports
521" https://www.w3.org/TR/css3-conditional/#at-supports
522syn region cssAtRule start=/@supports\>/ end=/\ze{/ skipwhite skipnl contains=cssAtRuleLogical,cssAttrRegion,css.*Prop,cssValue.*,cssVendor,cssAtKeyword,cssComment nextgroup=cssDefinition
523
Bram Moolenaar071d4272004-06-13 20:20:40 +0000524
525if main_syntax == "css"
526 syn sync minlines=10
527endif
528
529" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200530" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000531
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200532hi def link cssComment Comment
533hi def link cssVendor Comment
534hi def link cssHacks Comment
535hi def link cssTagName Statement
536hi def link cssDeprecated Error
537hi def link cssSelectorOp Special
538hi def link cssSelectorOp2 Special
539hi def link cssAttrComma Special
Bram Moolenaard09acef2012-09-21 14:54:30 +0200540
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200541hi def link cssAnimationProp cssProp
542hi def link cssBackgroundProp cssProp
543hi def link cssBorderProp cssProp
544hi def link cssBoxProp cssProp
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200545hi def link cssCascadeProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200546hi def link cssColorProp cssProp
547hi def link cssContentForPagedMediaProp cssProp
548hi def link cssDimensionProp cssProp
549hi def link cssFlexibleBoxProp cssProp
550hi def link cssFontProp cssProp
551hi def link cssGeneratedContentProp cssProp
552hi def link cssGridProp cssProp
553hi def link cssHyerlinkProp cssProp
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100554hi def link cssInteractProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200555hi def link cssLineboxProp cssProp
556hi def link cssListProp cssProp
557hi def link cssMarqueeProp cssProp
558hi def link cssMultiColumnProp cssProp
559hi def link cssPagedMediaProp cssProp
560hi def link cssPositioningProp cssProp
Bram Moolenaar22863042021-10-16 15:23:36 +0100561hi def link cssObjectProp cssProp
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200562hi def link cssPrintProp cssProp
563hi def link cssRubyProp cssProp
564hi def link cssSpeechProp cssProp
565hi def link cssTableProp cssProp
566hi def link cssTextProp cssProp
567hi def link cssTransformProp cssProp
568hi def link cssTransitionProp cssProp
569hi def link cssUIProp cssProp
570hi def link cssIEUIProp cssProp
571hi def link cssAuralProp cssProp
572hi def link cssRenderProp cssProp
573hi def link cssMobileTextProp cssProp
Bram Moolenaard09acef2012-09-21 14:54:30 +0200574
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200575hi def link cssAnimationAttr cssAttr
576hi def link cssBackgroundAttr cssAttr
577hi def link cssBorderAttr cssAttr
578hi def link cssBoxAttr cssAttr
579hi def link cssContentForPagedMediaAttr cssAttr
580hi def link cssDimensionAttr cssAttr
581hi def link cssFlexibleBoxAttr cssAttr
582hi def link cssFontAttr cssAttr
583hi def link cssGeneratedContentAttr cssAttr
584hi def link cssGridAttr cssAttr
585hi def link cssHyerlinkAttr cssAttr
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100586hi def link cssInteractAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200587hi def link cssLineboxAttr cssAttr
588hi def link cssListAttr cssAttr
589hi def link cssMarginAttr cssAttr
590hi def link cssMarqueeAttr cssAttr
591hi def link cssMultiColumnAttr cssAttr
592hi def link cssPaddingAttr cssAttr
593hi def link cssPagedMediaAttr cssAttr
594hi def link cssPositioningAttr cssAttr
Bram Moolenaar22863042021-10-16 15:23:36 +0100595hi def link cssObjectAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200596hi def link cssGradientAttr cssAttr
597hi def link cssPrintAttr cssAttr
598hi def link cssRubyAttr cssAttr
599hi def link cssSpeechAttr cssAttr
600hi def link cssTableAttr cssAttr
601hi def link cssTextAttr cssAttr
602hi def link cssTransformAttr cssAttr
603hi def link cssTransitionAttr cssAttr
604hi def link cssUIAttr cssAttr
605hi def link cssIEUIAttr cssAttr
606hi def link cssAuralAttr cssAttr
607hi def link cssRenderAttr cssAttr
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200608hi def link cssCascadeAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200609hi def link cssCommonAttr cssAttr
Bram Moolenaard09acef2012-09-21 14:54:30 +0200610
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200611hi def link cssPseudoClassId PreProc
612hi def link cssPseudoClassLang Constant
613hi def link cssValueLength Number
614hi def link cssValueInteger Number
615hi def link cssValueNumber Number
616hi def link cssValueAngle Number
617hi def link cssValueTime Number
618hi def link cssValueFrequency Number
619hi def link cssFunction Constant
620hi def link cssURL String
621hi def link cssFunctionName Function
622hi def link cssFunctionComma Function
623hi def link cssColor Constant
624hi def link cssIdentifier Function
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100625hi def link cssAtRule Include
626hi def link cssAtKeyword PreProc
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200627hi def link cssImportant Special
Bram Moolenaar06fe74a2019-08-31 16:20:32 +0200628hi def link cssCustomProp Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200629hi def link cssBraces Function
630hi def link cssBraceError Error
631hi def link cssError Error
632hi def link cssUnicodeEscape Special
633hi def link cssStringQQ String
634hi def link cssStringQ String
635hi def link cssAttributeSelector String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200636hi def link cssMediaType Special
637hi def link cssMediaComma Normal
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100638hi def link cssAtRuleLogical Statement
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200639hi def link cssMediaProp cssProp
640hi def link cssMediaAttr cssAttr
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200641hi def link cssPagePseudo PreProc
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100642hi def link cssPageMarginProp cssAtKeyword
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200643hi def link cssPageProp cssProp
Bram Moolenaar22f1d0e2018-02-27 14:53:30 +0100644hi def link cssKeyFrameProp Constant
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200645hi def link cssFontDescriptor Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200646hi def link cssFontDescriptorProp cssProp
647hi def link cssFontDescriptorAttr cssAttr
648hi def link cssUnicodeRange Constant
649hi def link cssClassName Function
650hi def link cssClassNameDot Function
651hi def link cssProp StorageClass
652hi def link cssAttr Constant
653hi def link cssUnitDecorators Number
654hi def link cssNoise Noise
Bram Moolenaar071d4272004-06-13 20:20:40 +0000655
656let b:current_syntax = "css"
657
658if main_syntax == 'css'
659 unlet main_syntax
660endif
661
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200662let &cpo = s:cpo_save
663unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000664
Bram Moolenaar4f4d51a2020-10-11 13:57:40 +0200665" vim: ts=8