css.vim 14 KB

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