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