Blame data/language-specs/scss.lang

Packit a7d494
Packit a7d494
Packit a7d494
Packit a7d494
 This file is part of GtkSourceView
Packit a7d494
Packit a7d494
 Author: Jeffery To <jeffery.to@gmail.com>
Packit a7d494
 Copyright (C) 2018 Jeffery To <jeffery.to@gmail.com>
Packit a7d494
Packit a7d494
 GtkSourceView is free software; you can redistribute it and/or
Packit a7d494
 modify it under the terms of the GNU Lesser General Public
Packit a7d494
 License as published by the Free Software Foundation; either
Packit a7d494
 version 2.1 of the License, or (at your option) any later version.
Packit a7d494
Packit a7d494
 GtkSourceView is distributed in the hope that it will be useful,
Packit a7d494
 but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a7d494
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a7d494
 Lesser General Public License for more details.
Packit a7d494
Packit a7d494
 You should have received a copy of the GNU Lesser General Public License
Packit a7d494
 along with this library; if not, see <http://www.gnu.org/licenses/>.
Packit a7d494
Packit a7d494
-->
Packit a7d494
<language id="scss" name="SCSS" version="2.0" _section="Other">
Packit a7d494
  <metadata>
Packit a7d494
    <property name="mimetypes">text/x-scss</property>
Packit a7d494
    <property name="globs">*.scss</property>
Packit a7d494
    <property name="line-comment-start">//</property>
Packit a7d494
    <property name="block-comment-start">/*</property>
Packit a7d494
    <property name="block-comment-end">*/</property>
Packit a7d494
  </metadata>
Packit a7d494
Packit a7d494
  <styles>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="interpolation"               name="Interpolation"               map-to="def:preprocessor"/>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="variable"                    name="Variable"                    map-to="def:identifier"/>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="operator-symbol"             name="Operator Symbol"             map-to="css:symbol"/>
Packit a7d494
    <style id="logical-operator"            name="Logical Operator"            map-to="def:preprocessor"/>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="boolean"                     name="Boolean Value"               map-to="def:boolean"/>
Packit a7d494
    <style id="null"                        name="Null Value"                  map-to="def:special-constant"/>
Packit a7d494
    <style id="list-delimiter"              name="List Delimiter"              map-to="css:delimiter"/>
Packit a7d494
    <style id="group-delimiter"             name="Group Delimiter"             map-to="css:delimiter"/>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="placeholder-selector"        name="Placeholder Selector"        map-to="def:identifier"/>
Packit a7d494
    <style id="selector-fragment"           name="Selector Fragment"/>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <style id="mixin-name"                  name="Mixin Name"                  map-to="def:keyword"/>
Packit a7d494
Packit a7d494
  </styles>
Packit a7d494
Packit a7d494
  <default-regex-options case-sensitive="false"/>
Packit a7d494
Packit a7d494
  <keyword-char-class>[a-z0-9_-]</keyword-char-class>
Packit a7d494
Packit a7d494
  <definitions>
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="sass-c-like-comment-multiline" style-ref="def:comment" class-disabled="no-spell-check" class="comment">
Packit a7d494
      <start>/\*</start>
Packit a7d494
      <end>\*/</end>
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="def:in-comment"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-comment">
Packit a7d494
      <include>
Packit a7d494
        <context ref="def:c-like-comment"/>
Packit a7d494
        <context ref="sass-c-like-comment-multiline"/>
Packit a7d494
        <context ref="def:c-like-close-comment-outside-comment"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:comment" ref="scss-comment"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="interpolation">
Packit a7d494
      <start>#\{</start>
Packit a7d494
      <end>\}</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="interpolation"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="interpolation"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="variable" style-ref="variable">
Packit a7d494
      <match>\$\%{css:identifier-regex}</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    
Packit a7d494
         as we cannot reliably distinguish between a literal slash and
Packit a7d494
         a division operation -->
Packit a7d494
    <context id="arithmetic-operator" style-ref="operator-symbol">
Packit a7d494
      <match extended="true">
Packit a7d494
        (
Packit a7d494
          [+*%] |
Packit a7d494
          (?<! \%{css:single-identifier-char-regex} )
Packit a7d494
          -
Packit a7d494
          (?! \%{css:single-identifier-char-regex} )
Packit a7d494
        )
Packit a7d494
      </match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="string-operator" style-ref="operator-symbol">
Packit a7d494
      <match>\+</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="comparison-operator" style-ref="operator-symbol">
Packit a7d494
      <match>(<=?|>=?|[=!]=)</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="logical-operator" style-ref="logical-operator">
Packit a7d494
      <keyword>and</keyword>
Packit a7d494
      <keyword>not</keyword>
Packit a7d494
      <keyword>or</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="boolean" style-ref="boolean">
Packit a7d494
      <keyword>false</keyword>
Packit a7d494
      <keyword>true</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="null" style-ref="null">
Packit a7d494
      <keyword>null</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="parent-selector-list" style-ref="css:combinator">
Packit a7d494
      <match>&</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="bracketed-list">
Packit a7d494
      <start>\[</start>
Packit a7d494
      <end>\]</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="list-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="list-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    <context id="string-group">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="group-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="group-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:string-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="data-group">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="group-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="group-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:data-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    this could be a list, a map, or an order of operations grouping
Packit a7d494
    not sure how to differentiate between these
Packit a7d494
    -->
Packit a7d494
    <context id="any-group">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="group-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="group-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:colon"/> 
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-string-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:string-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:string-content" ref="scss-string-content"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="variable-arguments" style-ref="operator-symbol">
Packit a7d494
      <match>\.\.\.</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-url">
Packit a7d494
      <start>url\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:function"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="css:function"/>
Packit a7d494
        
Packit a7d494
        <context ref="sass-c-like-comment-multiline"/>
Packit a7d494
        <context ref="def:c-like-close-comment-outside-comment"/>
Packit a7d494
        <context ref="css:string-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-function-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:function-content" original="true"/>
Packit a7d494
        <context ref="variable-arguments"/>
Packit a7d494
        <context ref="css:colon"/> 
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:url" ref="scss-url"/>
Packit a7d494
    <replace id="css:function-content" ref="scss-function-content"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-name-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:function-call"/>
Packit a7d494
        <context ref="interpolation"/> 
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:name-value" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-string-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:function-call"/>
Packit a7d494
        <context ref="string-group"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:string-value" original="true"/>
Packit a7d494
        <context ref="string-operator"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-data-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:function-call"/>
Packit a7d494
        <context ref="data-group"/>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:string-value" original="true"/>
Packit a7d494
        <context ref="css:color-value"/>
Packit a7d494
        <context ref="css:number-value"/>
Packit a7d494
        <context ref="css:unicode-range"/>
Packit a7d494
        <context ref="arithmetic-operator"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:name-value" ref="scss-name-value"/>
Packit a7d494
    <replace id="css:string-value" ref="scss-string-value"/>
Packit a7d494
    <replace id="css:data-value" ref="scss-data-value"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-any-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:function-call"/>
Packit a7d494
        <context ref="any-group"/>
Packit a7d494
        <context ref="parent-selector-list"/>
Packit a7d494
        <context ref="bracketed-list"/>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="boolean"/>
Packit a7d494
        <context ref="null"/>
Packit a7d494
        <context ref="css:property-value-keyword"/>
Packit a7d494
        <context ref="css:string-value" original="true"/>
Packit a7d494
        <context ref="css:color-value"/>
Packit a7d494
        <context ref="css:number-value"/>
Packit a7d494
        <context ref="css:unicode-range"/>
Packit a7d494
        <context ref="logical-operator"/>
Packit a7d494
        <context ref="comparison-operator"/>
Packit a7d494
        <context ref="arithmetic-operator"/>
Packit a7d494
        <context ref="css:slash"/>
Packit a7d494
        <context ref="css:comma"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:any-value" ref="scss-any-value"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="variable-assignment-modifiers" style-ref="css:modifier">
Packit a7d494
      <keyword>default</keyword>
Packit a7d494
      <keyword>global</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-extend-modifiers" style-ref="css:modifier">
Packit a7d494
      <keyword>optional</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-modifier-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="variable-assignment-modifiers"/>
Packit a7d494
        <context ref="at-extend-modifiers"/>
Packit a7d494
        <context ref="css:modifier-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:modifier-content" ref="scss-modifier-content"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-property-name">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:property-name" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:property-name" ref="scss-property-name"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="nested-properties" end-parent="true">
Packit a7d494
      <start>\{</start>
Packit a7d494
      <end>\}</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:block-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="css:block-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:declaration"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-declaration-property">
Packit a7d494
      <include>
Packit a7d494
        <context ref="variable"/> 
Packit a7d494
        <context ref="css:declaration-property" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-declaration-value-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="nested-properties"/>
Packit a7d494
        <context ref="css:declaration-value-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-declaration-value">
Packit a7d494
      <start extended="true">
Packit a7d494
        (?(DEFINE)
Packit a7d494
          (?<interpolation>  # recursive subpattern to find matching brackets
Packit a7d494
            \#\{
Packit a7d494
              (?:
Packit a7d494
                (?>
Packit a7d494
                  (?:
Packit a7d494
                    [^#{}]+ |
Packit a7d494
                    (?! \#\{ | \} ) .
Packit a7d494
                  )+
Packit a7d494
                ) |
Packit a7d494
                (?&interpolation)
Packit a7d494
              )*
Packit a7d494
            \}
Packit a7d494
          )
Packit a7d494
        )
Packit a7d494
        :
Packit a7d494
        (?:
Packit a7d494
          (?!                                       # not the start of a
Packit a7d494
            \%{css:single-identifier-char-regex} |  #   pseudo-class
Packit a7d494
            [:\\] |                                 #   pseudo-element, escape
Packit a7d494
            \#\{                                    #   interpolation
Packit a7d494
          ) |                                       # or
Packit a7d494
          (?=                                       # ends like a normal declaration
Packit a7d494
            (?>
Packit a7d494
              (?:
Packit a7d494
                [^;}{#]+ |
Packit a7d494
                (?&interpolation)+ |
Packit a7d494
                \#+
Packit a7d494
              )*
Packit a7d494
            )
Packit a7d494
            \%{css:declaration-value-end}           #   with a semicolon or at the end of a block
Packit a7d494
          )
Packit a7d494
        )
Packit a7d494
      </start>
Packit a7d494
      <end>\%{css:declaration-value-end}</end> 
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:declaration-value-content"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-style-block-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="css:style-block-content" original="true"/>
Packit a7d494
        <context ref="css:at-rule"/>
Packit a7d494
        <context ref="css:selector"/>
Packit a7d494
        <context ref="css:style-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:declaration-property" ref="scss-declaration-property"/>
Packit a7d494
    <replace id="css:declaration-value-content" ref="scss-declaration-value-content"/>
Packit a7d494
    <replace id="css:declaration-value" ref="scss-declaration-value"/>
Packit a7d494
    <replace id="css:style-block-content" ref="scss-style-block-content"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-media-type-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:media-type-value" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-media-feature-test-name">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:media-feature-test-name" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-media-feature-test-value-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:media-feature-test-value-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:media-type-value" ref="scss-media-type-value"/>
Packit a7d494
    <replace id="css:media-feature-test-name" ref="scss-media-feature-test-name"/>
Packit a7d494
    <replace id="css:media-feature-test-value-content" ref="scss-media-feature-test-value-content"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    
Packit a7d494
    @extend <selector> <optional modifier>?;
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-extend">
Packit a7d494
      <start>@extend\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:selector"/>
Packit a7d494
        <context ref="css:modifier"/>
Packit a7d494
        <context ref="css:at-rule-delimiter"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @at-root (<selector>|<query>)? <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-at-root-query-type" style-ref="css:property-name">
Packit a7d494
      <keyword>without</keyword>
Packit a7d494
      <keyword>with</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-at-root-query-directive" style-ref="css:keyword">
Packit a7d494
      <keyword>all</keyword>
Packit a7d494
      <keyword>media</keyword>
Packit a7d494
      <keyword>rule</keyword>
Packit a7d494
      <keyword>supports</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-at-root-query-value">
Packit a7d494
      <start>:</start>
Packit a7d494
      <end>\%{css:test-value-end}</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="at-at-root-query-directive"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-at-root-query">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:test-delimiter"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="css:test-delimiter"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="at-at-root-query-type"/>
Packit a7d494
        <context ref="at-at-root-query-value"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-at-root">
Packit a7d494
      <start>@at-root\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:selector"/>
Packit a7d494
        <context ref="at-at-root-query"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @debug <any-value>;
Packit a7d494
    @warn <any-value>;
Packit a7d494
    @error <any-value>;
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-debug-warn-error">
Packit a7d494
      <start>@(debug|warn|error)\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:at-rule-delimiter"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @if <any-value> <css-block>
Packit a7d494
    @else if <any-value> <css-block>
Packit a7d494
    @else <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-if-else-if">
Packit a7d494
      <start>@(if|else\s+if)\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-else">
Packit a7d494
      <start>@else\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @for <variable> from <any-value> (through|to) <any-value> <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-for-keyword" style-ref="css:at-rule-operator">
Packit a7d494
      <keyword>from</keyword>
Packit a7d494
      <keyword>through</keyword>
Packit a7d494
      <keyword>to</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-for">
Packit a7d494
      <start>@for\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="at-for-keyword"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @each <variable> in <list> <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-each-keyword" style-ref="css:at-rule-operator">
Packit a7d494
      <keyword>in</keyword>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-each">
Packit a7d494
      <start>@each\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="at-each-keyword"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:comma"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @while <expression> <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-while">
Packit a7d494
      <start>@while\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @mixin <mixin name> <mixin-parameters>? <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="mixin-parameters">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="mixin-name"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="mixin-name"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:function-content"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-mixin">
Packit a7d494
      <start>@mixin\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:name" style-ref="mixin-name"/>
Packit a7d494
        <context ref="mixin-parameters"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @include <mixin name> <mixin-parameters>? (;|<css-block>)
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-include">
Packit a7d494
      <start>@include\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:name" style-ref="mixin-name"/>
Packit a7d494
        <context ref="mixin-parameters"/>
Packit a7d494
        <context ref="css:at-rule-delimiter"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @content;
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-content">
Packit a7d494
      <start>@content\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:at-rule-delimiter"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @function <function name> <function-parameters> <css-block>
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="function-parameters">
Packit a7d494
      <start>\(</start>
Packit a7d494
      <end>\)</end>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:function"/>
Packit a7d494
        <context sub-pattern="0" where="end" style-ref="css:function"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:function-content"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="at-function">
Packit a7d494
      <start>@function\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        
Packit a7d494
             between the function name and the parentheses -->
Packit a7d494
        <context ref="css:name" style-ref="css:function"/>
Packit a7d494
        <context ref="function-parameters"/>
Packit a7d494
        <context ref="css:at-rule-css-block"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    
Packit a7d494
    @return <any-value>;
Packit a7d494
    -->
Packit a7d494
Packit a7d494
    <context id="at-return">
Packit a7d494
      <start>@return\%]</start>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="0" where="start" style-ref="css:at-rule"/>
Packit a7d494
        <context ref="css:comment"/>
Packit a7d494
        <context ref="css:any-value"/>
Packit a7d494
        <context ref="css:at-rule-delimiter"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-font-feature-value-declaration-value-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
        <context ref="css:font-feature-value-declaration-value-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-keyframe-selector-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:keyframe-selector-value" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-namespace-value">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:namespace-value" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-at-rule">
Packit a7d494
      <include>
Packit a7d494
Packit a7d494
        <context ref="at-extend"/>
Packit a7d494
        <context ref="at-at-root"/>
Packit a7d494
Packit a7d494
        <context ref="at-debug-warn-error"/>
Packit a7d494
Packit a7d494
        <context ref="at-if-else-if"/>
Packit a7d494
        <context ref="at-else"/>
Packit a7d494
Packit a7d494
        <context ref="at-for"/>
Packit a7d494
        <context ref="at-each"/>
Packit a7d494
        <context ref="at-while"/>
Packit a7d494
Packit a7d494
        <context ref="at-mixin"/>
Packit a7d494
        <context ref="at-include"/>
Packit a7d494
        <context ref="at-content"/>
Packit a7d494
Packit a7d494
        <context ref="at-function"/>
Packit a7d494
        <context ref="at-return"/>
Packit a7d494
Packit a7d494
        <context ref="css:at-rule" original="true"/>
Packit a7d494
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:at-rule-style-block-content" ref="scss-style-block-content"/>
Packit a7d494
    <replace id="css:at-rule-css-block-content" ref="scss-style-block-content"/>
Packit a7d494
    <replace id="css:font-feature-value-declaration-value-content" ref="scss-font-feature-value-declaration-value-content"/>
Packit a7d494
    <replace id="css:keyframe-selector-value" ref="scss-keyframe-selector-value"/>
Packit a7d494
    <replace id="css:namespace-value" ref="scss-namespace-value"/>
Packit a7d494
    <replace id="css:at-rule" ref="scss-at-rule"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="parent-combinator">
Packit a7d494
      <match>(&)(\%{css:identifier-chars-regex}?)</match>
Packit a7d494
      <include>
Packit a7d494
        <context sub-pattern="1"  style-ref="css:combinator"/>
Packit a7d494
        <context sub-pattern="2"  style-ref="selector-fragment"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="placeholder-selector" style-ref="placeholder-selector">
Packit a7d494
      <match>%\%{css:identifier-regex}</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="interpolation-fragment" style-ref="selector-fragment">
Packit a7d494
      <match>(?<=\})\%{css:identifier-chars-regex}</match>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss-simple-selector">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/> 
Packit a7d494
        <context ref="interpolation-fragment"/>
Packit a7d494
        <context ref="css:simple-selector" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-combinator">
Packit a7d494
      <include>
Packit a7d494
        <context ref="parent-combinator"/>
Packit a7d494
        <context ref="css:combinator" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-nth-pseudo-class-argument-content">
Packit a7d494
      <include>
Packit a7d494
        <context ref="interpolation"/>
Packit a7d494
        <context ref="css:nth-pseudo-class-argument-content" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="scss-selector">
Packit a7d494
      <include>
Packit a7d494
        <context ref="placeholder-selector"/>
Packit a7d494
        <context ref="css:selector" original="true"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <replace id="css:simple-selector" ref="scss-simple-selector"/>
Packit a7d494
    <replace id="css:combinator" ref="scss-combinator"/>
Packit a7d494
    <replace id="css:nth-pseudo-class-argument-content" ref="scss-nth-pseudo-class-argument-content"/>
Packit a7d494
    <replace id="css:selector" ref="scss-selector"/>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="top-level-declaration-property">
Packit a7d494
      <include>
Packit a7d494
        <context ref="variable"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
    <context id="top-level-declaration">
Packit a7d494
      <include>
Packit a7d494
        <context ref="top-level-declaration-property"/>
Packit a7d494
        <context ref="css:declaration-value"/>
Packit a7d494
        <context ref="css:modifier"/>
Packit a7d494
        <context ref="css:semicolon"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
Packit a7d494
    
Packit a7d494
Packit a7d494
    <context id="scss" class="no-spell-check">
Packit a7d494
      <include>
Packit a7d494
        <context ref="top-level-declaration"/>
Packit a7d494
        <context ref="css:css"/>
Packit a7d494
      </include>
Packit a7d494
    </context>
Packit a7d494
Packit a7d494
  </definitions>
Packit a7d494
</language>