neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

sass.vim (6412B)


      1 " Vim syntax file
      2 " Language:	Sass
      3 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
      4 " Filenames:	*.sass
      5 " Last Change:	2022 Mar 15
      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 cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
     16 syn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
     17 
     18 syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP
     19 
     20 syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition
     21 syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
     22 syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
     23 syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation
     24 syn match sassFlag "!\%(default\|global\|optional\)\>" contained
     25 syn match sassVariable "$[[:alnum:]_-]\+"
     26 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite
     27 syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite
     28 
     29 syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained
     30 syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained
     31 syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained
     32 syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained
     33 syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained
     34 syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained
     35 
     36 syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty
     37 
     38 syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
     39 syn match sassMixin  "^="               nextgroup=sassMixinName skipwhite
     40 syn match sassMixin  "\%([{};]\s*\|^\s*\)\@<=@mixin"   nextgroup=sassMixinName skipwhite
     41 syn match sassMixing "^\s\+\zs+"        nextgroup=sassMixinName
     42 syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
     43 syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
     44 
     45 syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
     46 syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function"   nextgroup=sassFunctionName skipwhite
     47 syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return"
     48 
     49 syn match sassEscape     "^\s*\zs\\"
     50 syn match sassIdChar     "#[[:alnum:]_-]\@=" nextgroup=sassId
     51 syn match sassId         "[[:alnum:]_-]\+" contained
     52 syn match sassClassChar  "\.[[:alnum:]_-]\@=" nextgroup=sassClass
     53 syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%"   nextgroup=sassClass
     54 syn match sassClass      "[[:alnum:]_-]\+" contained
     55 syn match sassAmpersand  "&"
     56 
     57 " TODO: Attribute namespaces
     58 " TODO: Arithmetic (including strings and concatenation)
     59 
     60 syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators
     61 syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition
     62 syn keyword sassMediaOperators and not only contained
     63 syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
     64 syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
     65 syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction
     66 syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction
     67 syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction
     68 syn keyword sassFor from to through in contained
     69 
     70 syn keyword sassTodo        FIXME NOTE TODO OPTIMIZE XXX contained
     71 syn region  sassComment     start="^\z(\s*\)//"  end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
     72 syn region  sassCssComment  start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
     73 syn match   sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell
     74 
     75 hi def link sassEndOfLineComment        sassComment
     76 hi def link sassCssComment              sassComment
     77 hi def link sassComment                 Comment
     78 hi def link sassFlag                    cssImportant
     79 hi def link sassVariable                Identifier
     80 hi def link sassFunction                Function
     81 hi def link sassMixing                  PreProc
     82 hi def link sassMixin                   PreProc
     83 hi def link sassPlaceholder             sassClassChar
     84 hi def link sassExtend                  PreProc
     85 hi def link sassFunctionDecl            PreProc
     86 hi def link sassReturn                  PreProc
     87 hi def link sassTodo                    Todo
     88 hi def link sassCharset                 PreProc
     89 hi def link sassMedia                   PreProc
     90 hi def link sassMediaOperators          PreProc
     91 hi def link sassInclude                 Include
     92 hi def link sassDebug                   sassControl
     93 hi def link sassWarn                    sassControl
     94 hi def link sassControl                 PreProc
     95 hi def link sassFor                     PreProc
     96 hi def link sassEscape                  Special
     97 hi def link sassIdChar                  Special
     98 hi def link sassClassChar               Special
     99 hi def link sassInterpolationDelimiter  Delimiter
    100 hi def link sassAmpersand               Character
    101 hi def link sassId                      Identifier
    102 hi def link sassClass                   Type
    103 
    104 let b:current_syntax = "sass"
    105 
    106 " vim:set sw=2: