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