TextMate-style syntax highlighting in PHP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1094 lines
26 KiB

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