xref: /vim-8.2.3635/runtime/syntax/sass.vim (revision c08ee747)
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