less.vim 15 KB

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