393
|
1 " Vim syntax file
|
|
2 " Language: SCSS (Sassy CSS)
|
|
3 " Author: Daniel Hofstetter (daniel.hofstetter@42dh.com)
|
|
4 " Inspired by the syntax files for sass and css. Thanks to the authors of
|
|
5 " those files!
|
|
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 region scssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,scssDefinition,scssComment,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssInclude,scssExtend,scssDebug,scssWarn,@scssControl,scssInterpolation,scssNestedSelector,scssReturn
|
|
16
|
|
17 syn region scssInterpolation start="#{" end="}" contains=scssVariable
|
|
18
|
|
19 syn match scssVariable "$[[:alnum:]_-]\+" nextgroup=scssVariableAssignment
|
|
20 syn match scssVariableAssignment ":" contained nextgroup=scssVariableValue
|
|
21 syn match scssVariableValue ".*;"me=e-1 contained contains=scssVariable,scssOperator,scssDefault "me=e-1 means that the last char of the pattern is not highlighted
|
|
22 syn match scssMixin "^@mixin" nextgroup=scssMixinName
|
|
23 syn match scssMixinName " [[:alnum:]_-]\+" contained nextgroup=scssDefinition
|
|
24 syn match scssFunction "^@function" nextgroup=scssFunctionName
|
|
25 syn match scssFunctionName " [[:alnum:]_-]\+" contained nextgroup=scssDefinition
|
|
26 syn match scssReturn "@return" contained
|
|
27 syn match scssInclude "@include" nextgroup=scssMixinName
|
|
28 syn match scssExtend "@extend .*[;}]"me=e-1 contains=cssTagName,scssIdChar,scssClassChar
|
|
29
|
|
30 syn match scssColor "#[0-9A-Fa-f]\{3\}\>" contained
|
|
31 syn match scssColor "#[0-9A-Fa-f]\{6\}\>" contained
|
|
32
|
|
33 syn match scssIdChar "#[[:alnum:]_-]\@=" nextgroup=scssId contains=scssColor
|
|
34 syn match scssId "[[:alnum:]_-]\+" contained
|
|
35 syn match scssClassChar "\.[[:alnum:]_-]\@=" nextgroup=scssClass
|
|
36 syn match scssClass "[[:alnum:]_-]\+" contained
|
|
37 syn match scssAmpersand "&" nextgroup=cssPseudoClass
|
|
38
|
|
39 syn match scssOperator "+" contained
|
|
40 syn match scssOperator "-" contained
|
|
41 syn match scssOperator "/" contained
|
|
42 syn match scssOperator "*" contained
|
|
43
|
|
44 syn match scssNestedSelector "[^/]* {"me=e-1 contained contains=cssTagName,cssAttributeSelector,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssMixin,scssFunction,@scssControl,scssInterpolation,scssNestedProperty
|
|
45 syn match scssNestedProperty "[[:alnum:]]\+:"me=e-1 contained
|
|
46
|
|
47 syn match scssDebug "@debug"
|
|
48 syn match scssWarn "@warn"
|
|
49 syn match scssDefault "!default" contained
|
|
50
|
|
51 syn match scssIf "@if"
|
|
52 syn match scssElse "@else"
|
|
53 syn match scssElseIf "@else if"
|
|
54 syn match scssWhile "@while"
|
|
55 syn match scssFor "@for" nextgroup=scssVariable
|
|
56 syn match scssFrom " from "
|
|
57 syn match scssTo " to "
|
|
58 syn match scssThrough " through "
|
|
59 syn match scssEach "@each" nextgroup=scssVariable
|
|
60 syn match scssIn " in "
|
|
61 syn cluster scssControl contains=scssIf,scssElse,scssElseIf,scssWhile,scssFor,scssFrom,scssTo,scssThrough,scssEach,scssIn
|
|
62
|
|
63 syn match scssComment "//.*$" contains=@Spell
|
|
64 syn region scssImportStr start="\"" end="\""
|
|
65 syn region scssImport start="@import" end=";" contains=scssImportStr,scssComment,cssComment,cssUnicodeEscape,cssMediaType
|
|
66
|
|
67 hi def link scssVariable Identifier
|
|
68 hi def link scssVariableValue Constant
|
|
69 hi def link scssMixin PreProc
|
|
70 hi def link scssMixinName Function
|
|
71 hi def link scssFunction PreProc
|
|
72 hi def link scssFunctionName Function
|
|
73 hi def link scssReturn Statement
|
|
74 hi def link scssInclude PreProc
|
|
75 hi def link scssExtend PreProc
|
|
76 hi def link scssComment Comment
|
|
77 hi def link scssColor Constant
|
|
78 hi def link scssIdChar Special
|
|
79 hi def link scssClassChar Special
|
|
80 hi def link scssId Identifier
|
|
81 hi def link scssClass Identifier
|
|
82 hi def link scssAmpersand Character
|
|
83 hi def link scssNestedProperty Type
|
|
84 hi def link scssDebug Debug
|
|
85 hi def link scssWarn Debug
|
|
86 hi def link scssDefault Special
|
|
87 hi def link scssIf Conditional
|
|
88 hi def link scssElse Conditional
|
|
89 hi def link scssElseIf Conditional
|
|
90 hi def link scssWhile Repeat
|
|
91 hi def link scssFor Repeat
|
|
92 hi def link scssFrom Repeat
|
|
93 hi def link scssTo Repeat
|
|
94 hi def link scssThrough Repeat
|
|
95 hi def link scssEach Repeat
|
|
96 hi def link scssIn Repeat
|
|
97 hi def link scssInterpolation Delimiter
|
|
98 hi def link scssImport Include
|
|
99 hi def link scssImportStr Include
|
|
100
|
|
101 let b:current_syntax = "scss"
|