| 
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"
 |