]> git.r.bdr.sh - rbdr/dotfiles/blob - vim/syntax/sass.vim
629da261eb8af95e0b5fd054d1e618a9d7d852fe
[rbdr/dotfiles] / vim / syntax / sass.vim
1 " Vim syntax file
2 " Language: Sass
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
4 " Filenames: *.sass
5 " Last Change: 2010 Aug 09
6
7 if exists("b:current_syntax")
8 finish
9 endif
10
11 runtime! syntax/css.vim
12
13 syn case ignore
14
15 syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
16 syn cluster sassCssAttributes contains=css.*Attr,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
17
18 syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP
19
20 syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition
21 syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
22 syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
23 syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation
24 syn match sassDefault "!default\>" contained
25 syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+"
26 syn match sassVariable "$[[:alnum:]_-]\+"
27 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite
28 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite
29
30 syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained
31 syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained
32 syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained
33 syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained
34 syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained
35 syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained
36
37 syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,sassProperty
38
39 syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
40 syn match sassMixin "^=" nextgroup=sassMixinName skipwhite
41 syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite
42 syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName
43 syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
44 syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
45
46 syn match sassEscape "^\s*\zs\\"
47 syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
48 syn match sassId "[[:alnum:]_-]\+" contained
49 syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
50 syn match sassClass "[[:alnum:]_-]\+" contained
51 syn match sassAmpersand "&"
52
53 " TODO: Attribute namespaces
54 " TODO: Arithmetic (including strings and concatenation)
55
56 syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssURL,cssUnicodeEscape,cssMediaType
57 syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction
58 syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction
59 syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction
60 syn keyword sassFor from to through in contained
61
62 syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained
63 syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
64 syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
65
66 hi def link sassCssComment sassComment
67 hi def link sassComment Comment
68 hi def link sassDefault cssImportant
69 hi def link sassVariable Identifier
70 hi def link sassFunction Function
71 hi def link sassMixing PreProc
72 hi def link sassMixin PreProc
73 hi def link sassExtend PreProc
74 hi def link sassTodo Todo
75 hi def link sassInclude Include
76 hi def link sassDebug sassControl
77 hi def link sassWarn sassControl
78 hi def link sassControl PreProc
79 hi def link sassFor PreProc
80 hi def link sassEscape Special
81 hi def link sassIdChar Special
82 hi def link sassClassChar Special
83 hi def link sassInterpolationDelimiter Delimiter
84 hi def link sassAmpersand Character
85 hi def link sassId Identifier
86 hi def link sassClass Type
87
88 let b:current_syntax = "sass"
89
90 " vim:set sw=2: