sass.vim 6.3 KB

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