xref: /vim-8.2.3635/runtime/syntax/sass.vim (revision cb03397a)
1" Vim syntax file
2" Language:	Sass
3" Maintainer:	Tim Pope <[email protected]>
4" Filenames:	*.sass
5" Last Change:	2013 May 30
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:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition
21syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[: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,sassInterpolation
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,cssPseudoClass,sassProperty
38
39syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
40syn match sassMixin  "^="               nextgroup=sassMixinName skipwhite
41syn match sassMixin  "\%([{};]\s*\|^\s*\)\@<=@mixin"   nextgroup=sassMixinName skipwhite
42syn match sassMixing "^\s\+\zs+"        nextgroup=sassMixinName
43syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
44syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
45syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%"   nextgroup=sassMixinName skipwhite
46
47syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
48syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function"   nextgroup=sassFunctionName skipwhite
49syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return"
50
51syn match sassEscape     "^\s*\zs\\"
52syn match sassIdChar     "#[[:alnum:]_-]\@=" nextgroup=sassId
53syn match sassId         "[[:alnum:]_-]\+" contained
54syn match sassClassChar  "\.[[:alnum:]_-]\@=" nextgroup=sassClass
55syn match sassClass      "[[:alnum:]_-]\+" contained
56syn match sassAmpersand  "&"
57
58" TODO: Attribute namespaces
59" TODO: Arithmetic (including strings and concatenation)
60
61syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
62syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction
63syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction
64syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction
65syn keyword sassFor from to through in contained
66
67syn keyword sassTodo        FIXME NOTE TODO OPTIMIZE XXX contained
68syn region  sassComment     start="^\z(\s*\)//"  end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
69syn region  sassCssComment  start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
70
71hi def link sassCssComment              sassComment
72hi def link sassComment                 Comment
73hi def link sassDefault                 cssImportant
74hi def link sassVariable                Identifier
75hi def link sassFunction                Function
76hi def link sassMixing                  PreProc
77hi def link sassMixin                   PreProc
78hi def link sassPlaceholder             PreProc
79hi def link sassExtend                  PreProc
80hi def link sassFunctionDecl            PreProc
81hi def link sassReturn                  PreProc
82hi def link sassTodo                    Todo
83hi def link sassInclude                 Include
84hi def link sassDebug                   sassControl
85hi def link sassWarn                    sassControl
86hi def link sassControl                 PreProc
87hi def link sassFor                     PreProc
88hi def link sassEscape                  Special
89hi def link sassIdChar                  Special
90hi def link sassClassChar               Special
91hi def link sassInterpolationDelimiter  Delimiter
92hi def link sassAmpersand               Character
93hi def link sassId                      Identifier
94hi def link sassClass                   Type
95
96let b:current_syntax = "sass"
97
98" vim:set sw=2:
99