{ "name": "Sass", "scopeName": "source.sass", "patterns": [ { "name": "meta.variable-declaration.sass", "begin": "(?:(!)|(\\$))([a-zA-Z0-9_-]+)\\s*(?=(\\|\\|)?=|:\\s+)", "end": "(;)?$", "patterns": [ { "name": "meta.property-value.sass", "begin": "(?:(:)\\s+)|((\\|\\|)?=)", "end": "(?=;?$)", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "punctuation.separator.key-value.css" }, "2": { "name": "invalid.illegal.deprecated.sass" } } } ], "beginCaptures": { "1": { "name": "invalid.illegal.deprecated.sass" }, "2": { "name": "punctuation.definition.entity.sass" }, "3": { "name": "variable.other.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.if.sass", "begin": "\\s*((@)if\\b)\\s+", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.if.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.else.sass", "begin": "\\s*((@)(?:(?:else(?=\\s*$))|(?:else\\s+if\\s+(?=\\S+))))", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.else.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.while.sass", "begin": "\\s*((@)while\\b)\\s+", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.while.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.for.sass", "begin": "\\s*((@)for\\b)\\s+", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.for.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.each.sass", "begin": "\\s*((@)each\\b)\\s+", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.each.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.function.sass", "begin": "^((@)function\\b)\\s*([a-zA-Z0-9_-]+)", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.function.sass" }, "2": { "name": "punctuation.definition.entity.sass" }, "3": { "name": "support.function.misc.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.return.sass", "begin": "\\s*((@)return\\b)\\s+", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.return.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.variable-declaration.sass.mixin", "begin": "^(=\\s*|(?:(@)mixin))\\s+([a-zA-Z0-9_-]+)", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.mixin.sass" }, "2": { "name": "punctuation.definition.entity.sass" }, "3": { "name": "variable.other.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.content.sass", "begin": "\\s*((@)content)\\s*$", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.content.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.function.include.sass", "begin": "^\\s*(\\+(?!\\s+)|(?:(@)include(?=\\s+)))\\s*([a-zA-Z0-9_-]+)", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.include.sass" }, "2": { "name": "punctuation.definition.entity.sass" }, "3": { "name": "variable.other.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.function.extend.sass", "match": "^\\s*(@extend)\\s+([.*\u0026#%a-zA-Z][-_:.*\u0026#a-zA-Z]*)\\s*(;)?\\s*$", "captures": { "1": { "name": "keyword.control.at-rule.extend.sass" }, "2": { "name": "variable.other.sass" }, "3": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.warn.sass", "begin": "\\s*((@)(warn|debug|error)\\b)\\s*", "end": "(;)?$", "patterns": [ { "include": "#string-single" }, { "include": "#string-double" } ], "beginCaptures": { "1": { "name": "keyword.control.warn.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.at-root.sass", "begin": "^\\s*((@)at-root)(?!(?:\\s+[^.\\(])|(?:\\s+\\((?!with)))", "end": "(;)?$", "patterns": [ { "match": "(?:(\\((?:with(?:out)?)\\s*:\\s*[a-zA-Z ]+\\))|((?:[.*\u0026#a][:*\u0026#a-zA-Z]+)+))", "captures": { "1": { "name": "support.function.misc.sass" }, "2": { "name": ".entity.other.attribute-name" } } } ], "beginCaptures": { "1": { "name": "keyword.control.at-root.sass" }, "2": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.variable-usage.sass", "begin": "^\\s*(\\+)([a-zA-Z0-9_-]+)", "end": "(;)?$", "patterns": [ { "name": "meta.variable-usage.sass", "match": "(!|\\$)([a-zA-Z0-9_-]+)", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "name": "variable.other.sass" } } }, { "include": "#string-single" }, { "include": "#string-double" } ], "beginCaptures": { "1": { "name": "punctuation.definition.entity.sass" }, "2": { "name": "variable.other.sass" }, "3": { "name": "punctuation.definition.entity.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.selector.css", "begin": "(?=[.*\u0026#\\[a-zA-Z][:.*\u0026#a-zA-Z]*)", "end": "(;)?$", "patterns": [ { "include": "#comments" }, { "match": "(\u0026)([a-zA-Z0-9_-]*)", "captures": { "1": { "name": "keyword.other.parent-reference.sass" }, "2": { "name": "entity.other.attribute-name.parent-selector-suffix.sass" } } }, { "name": "entity.other.attribute-name.class.sass", "match": "(\\.)[a-zA-Z0-9_-]+", "captures": { "1": { "name": "punctuation.definition.entity.css" } } }, { "include": "source.css#tag-names" }, { "name": "entity.other.attribute-name.id.css.sass", "match": "(#)[a-zA-Z][a-zA-Z0-9_-]*", "captures": { "1": { "name": "punctuation.definition.entity.sass" } } }, { "name": "entity.name.tag.wildcard.sass", "match": "\\*" }, { "include": "source.css#pseudo-classes" }, { "include": "source.css#pseudo-elements" }, { "include": "source.css#functional-pseudo-classes" }, { "name": "meta.attribute-selector.css.sass", "match": "(?i)(\\[)\\s*(-?[_a-z\\\\[[:^ascii:]]][-_a-z0-9\\\\[[:^ascii:]]]*)(?:\\s*([~|^$*]?=)\\s*(?:(-?[_a-z\\\\[[:^ascii:]]][-_a-z0-9\\\\[[:^ascii:]]]*)|((?\u003e(['\"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(])", "captures": { "1": { "name": "punctuation.definition.attribute-selector.begin.bracket.square.sass" }, "2": { "name": "entity.other.attribute-name.attribute.sass" }, "3": { "name": "keyword.operator.sass" }, "4": { "name": "string.unquoted.attribute-value.sass" }, "5": { "name": "string.quoted.double.attribute-value.sass" }, "6": { "name": "punctuation.definition.string.begin.sass" }, "7": { "name": "punctuation.definition.string.end.sass" }, "8": { "name": "punctuation.definition.attribute-selector.end.bracket.square.sass" } } } ], "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "include": "#comments" }, { "name": "meta.variable-declaration.sass.mixin", "begin": "^(=|@keyframes\\s+)([a-zA-Z0-9_-]+)", "end": "(;)?$", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.keyframes.sass" }, "2": { "name": "variable.other.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.import.sass", "begin": "^\\s*((@)import\\b)", "end": "(;)?$", "patterns": [ { "include": "#string-double" }, { "begin": "(url)\\s*(\\()\\s*", "end": "\\s*(\\))\\s*", "patterns": [ { "name": "variable.parameter.url.sass", "match": "[^'\") \\t]+" }, { "include": "#string-single" }, { "include": "#string-double" } ], "beginCaptures": { "1": { "name": "support.function.url.sass" }, "2": { "name": "punctuation.section.function.sass" } }, "endCaptures": { "1": { "name": "punctuation.section.function.sass" } } }, { "name": "variable.parameter.url.sass", "match": "([^\"'\\n;]+)" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.import.sass" }, "2": { "name": "punctuation.definition.keyword.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "name": "meta.at-rule.media.sass", "begin": "^\\s*((@)media)\\b", "end": "$", "patterns": [ { "name": "keyword.control.operator.css.sass", "match": "\\b(only)\\b" }, { "name": "meta.property-list.media-query.sass", "begin": "\\(", "end": "\\)", "patterns": [ { "name": "meta.property-name.media-query.sass", "begin": "(?\u003c![-a-z])(?=[-a-z])", "end": "$|(?![-a-z])", "patterns": [ { "include": "source.css#media-features" }, { "include": "source.css#property-names" } ] }, { "contentName": "meta.property-value.media-query.sass", "begin": "(:)\\s*", "end": "\\s*(?=\\))", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "punctuation.separator.key-value.sass" } } } ], "beginCaptures": { "0": { "name": "punctuation.definition.media-query.begin.bracket.round.sass" } }, "endCaptures": { "0": { "name": "punctuation.definition.media-query.end.bracket.round.sass" } } }, { "include": "#variable-usage" }, { "include": "#conditional-operators" }, { "include": "source.css#media-types" } ], "beginCaptures": { "1": { "name": "keyword.control.at-rule.media.sass" }, "2": { "name": "punctuation.definition.keyword.sass" } } }, { "begin": "^\\s+(:)(?=[-a-z])", "end": "(;)?$", "patterns": [ { "include": "#property-name" }, { "name": "meta.property-value.sass", "begin": "\\s+", "end": "(?=;?$)", "patterns": [ { "include": "#property-value" } ] } ], "beginCaptures": { "1": { "name": "punctuation.separator.key-value.css" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } }, { "begin": "^\\s+([-A-Za-z]+)\\s*(?=(\\|\\|)?=|:[ \\t]+)", "end": "(;)?$", "patterns": [ { "name": "meta.property-value.sass", "begin": "(?:(:)\\s+)|((\\|\\|)?=)", "end": "(?=;?$)", "patterns": [ { "include": "#property-value" } ], "beginCaptures": { "1": { "name": "punctuation.separator.key-value.css" }, "2": { "name": "invalid.illegal.deprecated.sass" } } } ], "beginCaptures": { "1": { "patterns": [ { "include": "#property-name" } ] }, "2": { "name": "punctuation.separator.key-value.css" }, "3": { "name": "invalid.illegal.deprecated.sass" } }, "endCaptures": { "1": { "name": "invalid.illegal.punctuation.sass" } } } ], "repository": { "comments": { "patterns": [ { "match": "\\w+\\s*((//|/\\*).*)", "captures": { "1": { "name": "invalid.illegal.sass" } } }, { "name": "comment.block.documentation.sass", "begin": "^(\\s*)(///)", "end": "^(?!\\s\\1)", "patterns": [ { "include": "source.sassdoc" } ], "beginCaptures": { "2": { "name": "punctuation.definition.comment.sass" } } }, { "name": "comment.block.sass", "begin": "^(\\s*)(/\\*)", "end": "(\\*/)|^(?!\\s\\1)", "beginCaptures": { "2": { "name": "punctuation.definition.comment.sass" } }, "endCaptures": { "1": { "name": "punctuation.definition.comment.sass" } } }, { "name": "comment.line.sass", "begin": "^(\\s*)(//)", "end": "^(?!\\s\\1)", "beginCaptures": { "2": { "name": "punctuation.definition.comment.sass" } } } ] }, "conditional-operators": { "patterns": [ { "name": "keyword.operator.comparison.sass", "match": "==|!=|\u003c=|\u003e=|\u003c|\u003e" }, { "name": "keyword.operator.logical.sass", "match": "\\b(not|or|and)\\b" } ] }, "property-name": { "name": "meta.property-name.sass", "begin": "(?=[-A-Za-z]+)", "end": "(?!\\G)", "patterns": [ { "include": "source.css#property-names" } ] }, "property-value": { "patterns": [ { "include": "source.css#numeric-values" }, { "name": "keyword.operator.css", "match": "[-+*/](?!\\s*[-+*/])" }, { "include": "#variable-usage" }, { "name": "support.constant.property-value.css.sass", "match": "\\b(true|false)\\b" }, { "include": "source.css#property-keywords" }, { "include": "source.css#color-keywords" }, { "name": "constant.other.color.rgb-value.css", "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b", "captures": { "1": { "name": "punctuation.definition.constant.css" } } }, { "include": "#string-double" }, { "include": "#string-single" }, { "begin": "(rgb|url|attr|counter|counters|local|format)\\s*(\\()", "end": "(\\))", "patterns": [ { "include": "#string-single" }, { "include": "#string-double" }, { "name": "constant.other.color.rgb-value.sass", "match": "(\\b0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\\s*,\\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\\s*,\\s*)(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\\b)" }, { "name": "constant.other.color.rgb-percentage.sass", "match": "\\b([0-9]{1,2}|100)\\s*%,\\s*([0-9]{1,2}|100)\\s*%,\\s*([0-9]{1,2}|100)\\s*%" }, { "name": "variable.parameter.misc.sass", "match": "[^'\") \\t]+" } ], "beginCaptures": { "1": { "name": "support.function.misc.sass" }, "2": { "name": "punctuation.section.function.sass" } }, "endCaptures": { "1": { "name": "punctuation.section.function.sass" } } }, { "name": "keyword.other.important.sass", "match": "!\\s*important" }, { "name": "keyword.operator.control.sass", "match": "(from|to|through|in)" }, { "include": "#conditional-operators" } ] }, "string-double": { "name": "string.quoted.double.sass", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.sass", "match": "\\\\([[:xdigit:]]{1,6}|.)" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.sass" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.sass" } } }, "string-single": { "name": "string.quoted.single.sass", "begin": "'", "end": "'", "patterns": [ { "name": "constant.character.escape.sass", "match": "\\\\([[:xdigit:]]{1,6}|.)" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.sass" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.sass" } } }, "variable-usage": { "name": "meta.variable-usage.sass", "match": "(!|\\$)([a-zA-Z0-9_-]+)", "captures": { "1": { "name": "punctuation.definition.entity.css" }, "2": { "name": "variable.other.sass" } } } } }