1c236c16dSBram Moolenaar" Vim syntax file 2c236c16dSBram Moolenaar" Language: Sass 37a329911SBram Moolenaar" Maintainer: Tim Pope <[email protected]> 4c236c16dSBram Moolenaar" Filenames: *.sass 5*c08ee747SBram Moolenaar" Last Change: 2019 Dec 05 6c236c16dSBram Moolenaar 7c236c16dSBram Moolenaarif exists("b:current_syntax") 8c236c16dSBram Moolenaar finish 9c236c16dSBram Moolenaarendif 10c236c16dSBram Moolenaar 11c236c16dSBram Moolenaarruntime! syntax/css.vim 12c236c16dSBram Moolenaar 13c236c16dSBram Moolenaarsyn case ignore 14c236c16dSBram Moolenaar 15c236c16dSBram Moolenaarsyn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp 1689bcfda6SBram Moolenaarsyn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp 17c236c16dSBram Moolenaar 180ed0eea2SBram Moolenaarsyn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP 190ed0eea2SBram Moolenaar 20543b7ef7SBram Moolenaarsyn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition 21543b7ef7SBram Moolenaarsyn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute 220ed0eea2SBram Moolenaarsyn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute 236af737fdSBram Moolenaarsyn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation 24*c08ee747SBram Moolenaarsyn match sassFlag "!\%(default\|global\|optional\)\>" contained 250ed0eea2SBram Moolenaarsyn match sassVariable "$[[:alnum:]_-]\+" 260ed0eea2SBram Moolenaarsyn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite 270ed0eea2SBram Moolenaarsyn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite 280ed0eea2SBram Moolenaar 290ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained 300ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained 310ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained 320ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained 330ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained 340ed0eea2SBram Moolenaarsyn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained 350ed0eea2SBram Moolenaar 36543b7ef7SBram Moolenaarsyn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty 370ed0eea2SBram Moolenaar 380ed0eea2SBram Moolenaarsyn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute 39543b7ef7SBram Moolenaarsyn match sassMixin "^=" nextgroup=sassMixinName skipwhite 406af737fdSBram Moolenaarsyn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite 410ed0eea2SBram Moolenaarsyn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName 426af737fdSBram Moolenaarsyn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite 436af737fdSBram Moolenaarsyn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" 44543b7ef7SBram Moolenaar 45543b7ef7SBram Moolenaarsyn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute 46543b7ef7SBram Moolenaarsyn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite 47543b7ef7SBram Moolenaarsyn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" 48c236c16dSBram Moolenaar 49c236c16dSBram Moolenaarsyn match sassEscape "^\s*\zs\\" 50c236c16dSBram Moolenaarsyn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId 51c236c16dSBram Moolenaarsyn match sassId "[[:alnum:]_-]\+" contained 52c236c16dSBram Moolenaarsyn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass 53*c08ee747SBram Moolenaarsyn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass 54c236c16dSBram Moolenaarsyn match sassClass "[[:alnum:]_-]\+" contained 55c236c16dSBram Moolenaarsyn match sassAmpersand "&" 56c236c16dSBram Moolenaar 57c236c16dSBram Moolenaar" TODO: Attribute namespaces 58c236c16dSBram Moolenaar" TODO: Arithmetic (including strings and concatenation) 59c236c16dSBram Moolenaar 6089bcfda6SBram Moolenaarsyn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators 6189bcfda6SBram Moolenaarsyn keyword sassMediaOperators and not only contained 6289bcfda6SBram Moolenaarsyn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType 63543b7ef7SBram Moolenaarsyn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType 640ed0eea2SBram Moolenaarsyn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction 650ed0eea2SBram Moolenaarsyn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction 66543b7ef7SBram Moolenaarsyn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction 67543b7ef7SBram Moolenaarsyn keyword sassFor from to through in contained 68c236c16dSBram Moolenaar 69c236c16dSBram Moolenaarsyn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained 700ed0eea2SBram Moolenaarsyn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell 710ed0eea2SBram Moolenaarsyn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell 7289bcfda6SBram Moolenaarsyn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell 73c236c16dSBram Moolenaar 7489bcfda6SBram Moolenaarhi def link sassEndOfLineComment sassComment 75c236c16dSBram Moolenaarhi def link sassCssComment sassComment 76c236c16dSBram Moolenaarhi def link sassComment Comment 77*c08ee747SBram Moolenaarhi def link sassFlag cssImportant 780ed0eea2SBram Moolenaarhi def link sassVariable Identifier 790ed0eea2SBram Moolenaarhi def link sassFunction Function 80c236c16dSBram Moolenaarhi def link sassMixing PreProc 81c236c16dSBram Moolenaarhi def link sassMixin PreProc 82*c08ee747SBram Moolenaarhi def link sassPlaceholder sassClassChar 830ed0eea2SBram Moolenaarhi def link sassExtend PreProc 84543b7ef7SBram Moolenaarhi def link sassFunctionDecl PreProc 85543b7ef7SBram Moolenaarhi def link sassReturn PreProc 86c236c16dSBram Moolenaarhi def link sassTodo Todo 8789bcfda6SBram Moolenaarhi def link sassCharset PreProc 8889bcfda6SBram Moolenaarhi def link sassMedia PreProc 8989bcfda6SBram Moolenaarhi def link sassMediaOperators PreProc 90c236c16dSBram Moolenaarhi def link sassInclude Include 910ed0eea2SBram Moolenaarhi def link sassDebug sassControl 920ed0eea2SBram Moolenaarhi def link sassWarn sassControl 937a329911SBram Moolenaarhi def link sassControl PreProc 947a329911SBram Moolenaarhi def link sassFor PreProc 95c236c16dSBram Moolenaarhi def link sassEscape Special 96c236c16dSBram Moolenaarhi def link sassIdChar Special 97c236c16dSBram Moolenaarhi def link sassClassChar Special 980ed0eea2SBram Moolenaarhi def link sassInterpolationDelimiter Delimiter 99c236c16dSBram Moolenaarhi def link sassAmpersand Character 100c236c16dSBram Moolenaarhi def link sassId Identifier 101c236c16dSBram Moolenaarhi def link sassClass Type 102c236c16dSBram Moolenaar 103c236c16dSBram Moolenaarlet b:current_syntax = "sass" 104c236c16dSBram Moolenaar 105c236c16dSBram Moolenaar" vim:set sw=2: 106