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