{ "name": "Less", "scopeName": "source.css.less", "fileTypes": [ "less", "less.erb" ], "patterns": [ { "include": "#strings" }, { "captures": { "1": { "name": "entity.other.attribute-name.class.mixin.css" } }, "match": "(\\.[_a-zA-Z][a-zA-Z0-9_-]*(?=\\())" }, { "captures": { "1": { "name": "entity.other.attribute-name.class.css" }, "2": { "name": "punctuation.definition.entity.css" }, "4": { "name": "variable.other.interpolation.less" } }, "match": "((\\.)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)" }, { "captures": { "0": { "name": "entity.other.attribute-name.parent-selector.css" }, "1": { "name": "punctuation.definition.entity.css" } }, "match": "(&)[a-zA-Z0-9_-]*" }, { "begin": "(format|local|url|attr|counter|counters)\\s*(\\()", "beginCaptures": { "1": { "name": "support.function.misc.css" }, "2": { "name": "punctuation.section.function.css" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.function.css" } }, "patterns": [ { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.single.css", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.css" } ] }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.css" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.css" } }, "name": "string.quoted.double.css", "patterns": [ { "match": "\\\\(\\d{1,6}|.)", "name": "constant.character.escape.css" } ] }, { "match": "[^'\") \\t]+", "name": "variable.parameter.misc.css" } ] }, { "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b(?!.*?(?(['\"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(\\])", "name": "meta.attribute-selector.css" }, { "begin": "((@)import\\b)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.import.less" }, "2": { "name": "punctuation.definition.keyword.less" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.rule.css" } }, "name": "meta.at-rule.import.css", "patterns": [ { "match": "(?<=\\(|,|\\s)\\b(reference|optional|once|multiple|less|inline)\\b(?=\\)|,)", "name": "keyword.control.import.option.less" }, { "include": "#brace_round" }, { "include": "source.css#commas" }, { "include": "#strings" } ] }, { "captures": { "1": { "name": "keyword.control.at-rule.fontface.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "match": "^\\s*((@)font-face\\b)", "name": "meta.at-rule.fontface.css" }, { "captures": { "1": { "name": "keyword.control.at-rule.media.css" }, "2": { "name": "punctuation.definition.keyword.css" } }, "match": "^\\s*((@)media\\b)", "name": "meta.at-rule.media.css" }, { "include": "source.css#media-features" }, { "match": "\\b(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)\\b", "name": "support.constant.media-type.media.css" }, { "match": "\\b(portrait|landscape)\\b", "name": "support.constant.property-value.media-property.media.css" }, { "captures": { "1": { "name": "support.function.less" } }, "match": "(\\.[a-zA-Z0-9_-]+)\\s*(;|\\()" }, { "begin": "(^[ \\t]+)?(?=//)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.less" } }, "end": "(?!\\G)", "patterns": [ { "begin": "//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.less" } }, "end": "\\n", "name": "comment.line.double-slash.less" } ] }, { "match": "(@|\\-\\-)[\\w-]+(?=\\s*)", "name": "variable.other.less", "captures": { "1": { "name": "punctuation.definition.variable.less" } } }, { "include": "#variable_interpolation" }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.property-list.begin.bracket.curly.css" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.property-list.end.bracket.curly.css" } }, "name": "meta.property-list.css", "patterns": [ { "include": "source.css#pseudo-elements" }, { "include": "source.css#pseudo-classes" }, { "include": "source.css#tag-names" }, { "include": "source.css#commas" }, { "include": "#variable_interpolation" }, { "include": "source.css#property-names" }, { "include": "#property_values" }, { "include": "$self" } ] }, { "match": "\\!\\s*important", "name": "keyword.other.important.css" }, { "match": "\\*|\\/|\\-|\\+|~|=|<=|>=|<|>", "name": "keyword.operator.less" }, { "match": "\\b(not|and|when)\\b", "name": "keyword.control.logical.operator.less" }, { "include": "source.css#tag-names" }, { "match": "(?