codemirror-textmate
Version:
Textmate based tokenization for CodeMirror
167 lines • 4.96 kB
JSON
{
"fileTypes": ["js", "jsx", "ts", "tsx", "vue"],
"injectionSelector": "L:source -comment -string",
"patterns": [
{
"contentName": "source.css.scss",
"begin": "(?:([\\s\\S][sS][tT][yY][lL][eE][dD](?:<[_$[:alpha:]][_$[[:alnum:][, '\"]]]+>)?(?:\\.[_$[:alpha:]][_$[:alnum:]]*|\\(['\"][_$[:alpha:]][_$[:alnum:]]*['\"]\\)|\\([_$[:alpha:]][_$\\.[:alnum:]]*(?:\\s+as\\s+.*?)?\\)))|(css|keyframes|injectGlobal|createGlobalStyle))\\s*(`)",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "source.ts#expression"
}
]
},
"2": {
"name": "entity.name.function.tagged-template.js"
},
"3": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js string.template.js"
}
},
"patterns": [
{
"include": "source.css.styled"
}
]
},
{
"contentName": "source.css.scss",
"begin": "(\\.)(extend)(`)",
"beginCaptures": {
"1": {
"name": "punctuation.accessor.js"
},
"2": {
"name": "entity.name.function.tagged-template.js"
},
"3": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js string.template.js"
}
},
"patterns": [
{
"include": "source.css.styled"
}
]
},
{
"contentName": "source.css.scss",
"begin": "([_$[:alpha:]][_$[:alnum:]]*\\.withComponent\\((?:['\"][_$[:alpha:]][_$[:alnum:]]*['\"]|[_$[:alpha:]][_$\\.[:alnum:]]*)\\))\\s*(?:(\\.)(extend))?(`)",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "source.ts#expression"
}
]
},
"2": {
"name": "punctuation.accessor.js"
},
"3": {
"name": "entity.name.function.tagged-template.js variable.other.property.js"
},
"4": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js string.template.js"
}
},
"patterns": [
{
"include": "source.css.styled"
}
]
},
{
"contentName": "source.css.scss",
"begin": "([mM][eE][dD][iI][aA]\\.[[:alpha:]][[:alnum:]]*(?:\\(.*?\\))?)\\s*(`)",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "source.ts#expression"
}
]
},
"2": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js string.template.js"
}
},
"patterns": [
{
"include": "source.css.styled"
}
]
},
{
"begin": "(?:([\\s\\S][sS][tT][yY][lL][eE][dD](?:<[_$[:alpha:]][_$[:alnum:]]+>)?(?:\\.[_$[:alpha:]][_$[:alnum:]]*|\\(['\"][_$[:alpha:]][_$[:alnum:]]*['\"]\\)|\\([_$[:alpha:]][_$\\.[:alnum:]]*(?:\\s+as\\s+.*?)?\\)))|(\\.)(extend))(?=\\.attrs\\s*\\()",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "source.ts#expression"
}
]
},
"2": {
"name": "punctuation.accessor.js"
},
"3": {
"name": "entity.name.function.tagged-template.js"
}
},
"end": "(?<!\\G)(?<=`)",
"patterns": [
{
"contentName": "source.css.scss",
"begin": "`",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.begin.js string.template.js"
}
},
"patterns": [
{
"include": "source.css.styled"
}
]
},
{
"include": "source.ts#expression"
}
]
}
],
"scopeName": "styled"
}