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