codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Sass3" Maintainer: Tim Pope <vimNOSPAM@tpope.org>4" Filenames: *.sass5" Last Change: 2022 Mar 156 7if exists("b:current_syntax")8 finish9endif10 11runtime! syntax/css.vim12 13syn case ignore14 15syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp16syn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp17 18syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP19 20syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition21syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute22syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute23syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation24syn match sassFlag "!\%(default\|global\|optional\)\>" contained25syn match sassVariable "$[[:alnum:]_-]\+"26syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite27syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite28 29syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained30syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained31syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained32syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained33syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained34syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained35 36syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty37 38syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute39syn match sassMixin "^=" nextgroup=sassMixinName skipwhite40syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite41syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName42syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite43syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"44 45syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute46syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite47syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return"48 49syn match sassEscape "^\s*\zs\\"50syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId51syn match sassId "[[:alnum:]_-]\+" contained52syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass53syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass54syn match sassClass "[[:alnum:]_-]\+" contained55syn match sassAmpersand "&"56 57" TODO: Attribute namespaces58" TODO: Arithmetic (including strings and concatenation)59 60syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators61syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition62syn keyword sassMediaOperators and not only contained63syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType64syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType65syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction66syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction67syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction68syn keyword sassFor from to through in contained69 70syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained71syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell72syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell73syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell74 75hi def link sassEndOfLineComment sassComment76hi def link sassCssComment sassComment77hi def link sassComment Comment78hi def link sassFlag cssImportant79hi def link sassVariable Identifier80hi def link sassFunction Function81hi def link sassMixing PreProc82hi def link sassMixin PreProc83hi def link sassPlaceholder sassClassChar84hi def link sassExtend PreProc85hi def link sassFunctionDecl PreProc86hi def link sassReturn PreProc87hi def link sassTodo Todo88hi def link sassCharset PreProc89hi def link sassMedia PreProc90hi def link sassMediaOperators PreProc91hi def link sassInclude Include92hi def link sassDebug sassControl93hi def link sassWarn sassControl94hi def link sassControl PreProc95hi def link sassFor PreProc96hi def link sassEscape Special97hi def link sassIdChar Special98hi def link sassClassChar Special99hi def link sassInterpolationDelimiter Delimiter100hi def link sassAmpersand Character101hi def link sassId Identifier102hi def link sassClass Type103 104let b:current_syntax = "sass"105 106" vim:set sw=2:107 