sass.vim (6412B)
1 " Vim syntax file 2 " Language: Sass 3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> 4 " Filenames: *.sass 5 " Last Change: 2022 Mar 15 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,sassEndOfLineComment,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:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition 21 syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[: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 sassFlag "!\%(default\|global\|optional\)\>" contained 25 syn match sassVariable "$[[:alnum:]_-]\+" 26 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite 27 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite 28 29 syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained 30 syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained 31 syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained 32 syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained 33 syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained 34 syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained 35 36 syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty 37 38 syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute 39 syn match sassMixin "^=" nextgroup=sassMixinName skipwhite 40 syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite 41 syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName 42 syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite 43 syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" 44 45 syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute 46 syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite 47 syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" 48 49 syn match sassEscape "^\s*\zs\\" 50 syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId 51 syn match sassId "[[:alnum:]_-]\+" contained 52 syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass 53 syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass 54 syn match sassClass "[[:alnum:]_-]\+" contained 55 syn match sassAmpersand "&" 56 57 " TODO: Attribute namespaces 58 " TODO: Arithmetic (including strings and concatenation) 59 60 syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators 61 syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition 62 syn keyword sassMediaOperators and not only contained 63 syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType 64 syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType 65 syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction 66 syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction 67 syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction 68 syn keyword sassFor from to through in contained 69 70 syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained 71 syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell 72 syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell 73 syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell 74 75 hi def link sassEndOfLineComment sassComment 76 hi def link sassCssComment sassComment 77 hi def link sassComment Comment 78 hi def link sassFlag cssImportant 79 hi def link sassVariable Identifier 80 hi def link sassFunction Function 81 hi def link sassMixing PreProc 82 hi def link sassMixin PreProc 83 hi def link sassPlaceholder sassClassChar 84 hi def link sassExtend PreProc 85 hi def link sassFunctionDecl PreProc 86 hi def link sassReturn PreProc 87 hi def link sassTodo Todo 88 hi def link sassCharset PreProc 89 hi def link sassMedia PreProc 90 hi def link sassMediaOperators PreProc 91 hi def link sassInclude Include 92 hi def link sassDebug sassControl 93 hi def link sassWarn sassControl 94 hi def link sassControl PreProc 95 hi def link sassFor PreProc 96 hi def link sassEscape Special 97 hi def link sassIdChar Special 98 hi def link sassClassChar Special 99 hi def link sassInterpolationDelimiter Delimiter 100 hi def link sassAmpersand Character 101 hi def link sassId Identifier 102 hi def link sassClass Type 103 104 let b:current_syntax = "sass" 105 106 " vim:set sw=2: