1342 lines
34 KiB
JSON
1342 lines
34 KiB
JSON
{
|
|
"fileTypes": ["marko"],
|
|
"name": "marko",
|
|
"patterns": [
|
|
{
|
|
"begin": "^\\s*(style)\\s+(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.marko.css"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko.css"
|
|
}
|
|
},
|
|
"comment": "CSS style block, eg: style { color: green }",
|
|
"contentName": "source.css",
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.end.marko.css"
|
|
}
|
|
},
|
|
"name": "meta.embedded.css",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^\\s*(style)\\.(less)\\s+(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.marko.css"
|
|
},
|
|
"2": {
|
|
"name": "storage.modifier.marko.css"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.section.scope.begin.marko.css"
|
|
}
|
|
},
|
|
"comment": "Less style block, eg: style.less { color: green }",
|
|
"contentName": "source.less",
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.end.marko.css"
|
|
}
|
|
},
|
|
"name": "meta.embedded.less",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css.less"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^\\s*(style)\\.(scss)\\s+(\\{)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.marko.css"
|
|
},
|
|
"2": {
|
|
"name": "storage.modifier.marko.css"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.section.scope.begin.marko.css"
|
|
}
|
|
},
|
|
"comment": "SCSS style block, eg: style.scss { color: green }",
|
|
"contentName": "source.scss",
|
|
"end": "\\}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.end.marko.css"
|
|
}
|
|
},
|
|
"name": "meta.embedded.scss",
|
|
"patterns": [
|
|
{
|
|
"include": "source.css.scss"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^\\s*(?:(static )|(?=(?:class|import|export) ))",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.static.marko"
|
|
}
|
|
},
|
|
"comment": "Top level blocks parsed as JavaScript",
|
|
"contentName": "source.js",
|
|
"end": "(?=\\n|$)",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-statement"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#content-concise-mode"
|
|
}
|
|
],
|
|
"repository": {
|
|
"attrs": {
|
|
"patterns": [
|
|
{
|
|
"applyEndPatternLast": 1,
|
|
"begin": "(?:\\s+|,)(?:(key|on[a-zA-Z0-9_$-]+|[a-zA-Z0-9_$]+Change|no-update(?:-body)?(?:-if)?)|([a-zA-Z0-9_$][a-zA-Z0-9_$-]*))(:[a-zA-Z0-9_$][a-zA-Z0-9_$-]*)?",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "support.type.attribute-name.marko"
|
|
},
|
|
"2": {
|
|
"name": "entity.other.attribute-name.marko"
|
|
},
|
|
"3": {
|
|
"name": "support.function.attribute-name.marko"
|
|
}
|
|
},
|
|
"comment": "Attribute with optional value",
|
|
"end": "(?=.|$)",
|
|
"name": "meta.marko-attribute",
|
|
"patterns": [
|
|
{
|
|
"include": "#html-args-or-method"
|
|
},
|
|
{
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(:?=)\\s*",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "Attribute value",
|
|
"contentName": "source.js",
|
|
"end": "(?=.|$)",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-expression"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"applyEndPatternLast": 1,
|
|
"begin": "(?:\\s+|,)\\.\\.\\.",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.operator.spread.marko"
|
|
}
|
|
},
|
|
"comment": "A ...spread attribute",
|
|
"contentName": "source.js",
|
|
"end": "(?=.|$)",
|
|
"name": "meta.marko-spread-attribute",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(,(?!,))",
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "Consume any whitespace after a comma",
|
|
"end": "(?!\\S)"
|
|
},
|
|
{
|
|
"include": "#javascript-comment-multiline"
|
|
},
|
|
{
|
|
"include": "#invalid"
|
|
}
|
|
]
|
|
},
|
|
"concise-html-block": {
|
|
"begin": "\\s*(--+)\\s*$",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "--- HTML block within concise mode content. ---",
|
|
"end": "\\1",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"name": "meta.section.marko-html-block",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-html-mode"
|
|
}
|
|
]
|
|
},
|
|
"concise-html-line": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#html-comments"
|
|
},
|
|
{
|
|
"include": "#tag-html"
|
|
},
|
|
{
|
|
"match": "\\\\.",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"match": ".+?",
|
|
"name": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "-- HTML line within concise mode content. (content-html-mode w/o scriptlet)",
|
|
"match": "\\s*(--+)(?=\\s+\\S)(.*$)",
|
|
"name": "meta.section.marko-html-line"
|
|
},
|
|
"concise-open-tag-content": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-before-attrs"
|
|
},
|
|
{
|
|
"begin": "\\s*\\[",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"end": "]",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#attrs"
|
|
},
|
|
{
|
|
"include": "#invalid"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?!^)(?= )",
|
|
"end": "(?=--)|(?<!,)(?=\\n)",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrs"
|
|
},
|
|
{
|
|
"include": "#invalid"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"concise-script-block": {
|
|
"begin": "(\\s+)(--+)\\s*$",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "--- Embedded concise script content block. ---",
|
|
"end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"name": "meta.section.marko-script-block",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-script"
|
|
}
|
|
]
|
|
},
|
|
"concise-script-line": {
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(--+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "-- Embedded concise script content line.",
|
|
"end": "$",
|
|
"name": "meta.section.marko-script-line",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-script"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-block": {
|
|
"begin": "(\\s+)(--+)\\s*$",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "--- Embedded concise style content block. ---",
|
|
"contentName": "source.css",
|
|
"end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"name": "meta.section.marko-style-block",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-block-less": {
|
|
"begin": "(\\s+)(--+)\\s*$",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "--- Embedded concise style content block. ---",
|
|
"contentName": "source.less",
|
|
"end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"name": "meta.section.marko-style-block",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-less"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-block-scss": {
|
|
"begin": "(\\s+)(--+)\\s*$",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "--- Embedded concise style content block. ---",
|
|
"contentName": "source.scss",
|
|
"end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"name": "meta.section.marko-style-block",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-scss"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-line": {
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(--+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "-- Embedded concise style content line.",
|
|
"contentName": "source.css",
|
|
"end": "$",
|
|
"name": "meta.section.marko-style-line",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-line-less": {
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(--+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "-- Embedded concise style content line.",
|
|
"contentName": "source.less",
|
|
"end": "$",
|
|
"name": "meta.section.marko-style-line",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-less"
|
|
}
|
|
]
|
|
},
|
|
"concise-style-line-scss": {
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(--+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "-- Embedded concise style content line.",
|
|
"contentName": "source.scss",
|
|
"end": "$",
|
|
"name": "meta.section.marko-style-line",
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-scss"
|
|
}
|
|
]
|
|
},
|
|
"content-concise-mode": {
|
|
"comment": "Concise mode content block.",
|
|
"name": "meta.marko-concise-content",
|
|
"patterns": [
|
|
{
|
|
"include": "#scriptlet"
|
|
},
|
|
{
|
|
"include": "#javascript-comments"
|
|
},
|
|
{
|
|
"include": "#html-comments"
|
|
},
|
|
{
|
|
"include": "#concise-html-block"
|
|
},
|
|
{
|
|
"include": "#concise-html-line"
|
|
},
|
|
{
|
|
"include": "#tag-html"
|
|
},
|
|
{
|
|
"comment": "A concise html tag.",
|
|
"patterns": [
|
|
{
|
|
"begin": "^(\\s*)(?=style\\.less\\b)",
|
|
"comment": "Concise style tag less",
|
|
"patterns": [
|
|
{
|
|
"include": "#concise-open-tag-content"
|
|
},
|
|
{
|
|
"include": "#concise-style-block-less"
|
|
},
|
|
{
|
|
"include": "#concise-style-line-less"
|
|
}
|
|
],
|
|
"while": "(?=^\\1\\s+(\\S|$))"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?=style\\.scss\\b)",
|
|
"comment": "Concise style tag scss",
|
|
"patterns": [
|
|
{
|
|
"include": "#concise-open-tag-content"
|
|
},
|
|
{
|
|
"include": "#concise-style-block-scss"
|
|
},
|
|
{
|
|
"include": "#concise-style-line-scss"
|
|
}
|
|
],
|
|
"while": "(?=^\\1\\s+(\\S|$))"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?=style\\b)",
|
|
"comment": "Concise style tag",
|
|
"patterns": [
|
|
{
|
|
"include": "#concise-open-tag-content"
|
|
},
|
|
{
|
|
"include": "#concise-style-block"
|
|
},
|
|
{
|
|
"include": "#concise-style-line"
|
|
}
|
|
],
|
|
"while": "(?=^\\1\\s+(\\S|$))"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?=script\\b)",
|
|
"comment": "Concise script tag",
|
|
"patterns": [
|
|
{
|
|
"include": "#concise-open-tag-content"
|
|
},
|
|
{
|
|
"include": "#concise-script-block"
|
|
},
|
|
{
|
|
"include": "#concise-script-line"
|
|
}
|
|
],
|
|
"while": "(?=^\\1\\s+(\\S|$))"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?=[a-zA-Z0-9_$@])",
|
|
"comment": "Normal concise tag",
|
|
"patterns": [
|
|
{
|
|
"include": "#concise-open-tag-content"
|
|
},
|
|
{
|
|
"include": "#content-concise-mode"
|
|
}
|
|
],
|
|
"while": "(?=^\\1\\s+(\\S|$))"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#invalid"
|
|
}
|
|
]
|
|
},
|
|
"content-embedded-script": {
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"content-embedded-style": {
|
|
"name": "meta.embedded.css",
|
|
"patterns": [
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"include": "source.css"
|
|
}
|
|
]
|
|
},
|
|
"content-embedded-style-less": {
|
|
"name": "meta.embedded.css.less",
|
|
"patterns": [
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"include": "source.css.less"
|
|
}
|
|
]
|
|
},
|
|
"content-embedded-style-scss": {
|
|
"name": "meta.embedded.css.scss",
|
|
"patterns": [
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"include": "source.css.scss"
|
|
}
|
|
]
|
|
},
|
|
"content-html-mode": {
|
|
"comment": "HTML mode content block.",
|
|
"patterns": [
|
|
{
|
|
"include": "#scriptlet"
|
|
},
|
|
{
|
|
"include": "#html-comments"
|
|
},
|
|
{
|
|
"include": "#tag-html"
|
|
},
|
|
{
|
|
"match": "\\\\.",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"include": "#placeholder"
|
|
},
|
|
{
|
|
"match": ".+?",
|
|
"name": "string"
|
|
}
|
|
]
|
|
},
|
|
"html-args-or-method": {
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-args"
|
|
},
|
|
{
|
|
"begin": "(?<=\\))\\s*(?=\\{)",
|
|
"comment": "Attribute method shorthand following parens",
|
|
"contentName": "source.js",
|
|
"end": "(?<=\\})",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"html-comments": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\s*(<!(--)?)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.marko"
|
|
}
|
|
},
|
|
"comment": "HTML comments, doctypes & cdata",
|
|
"end": "\\2>",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.marko"
|
|
}
|
|
},
|
|
"name": "comment.block.marko"
|
|
},
|
|
{
|
|
"begin": "\\s*(<html-comment>)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.marko"
|
|
}
|
|
},
|
|
"comment": "Preserved HTML comment tag",
|
|
"end": "</html-comment>",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.marko"
|
|
}
|
|
},
|
|
"name": "comment.block.marko"
|
|
}
|
|
]
|
|
},
|
|
"invalid": {
|
|
"match": "[^\\s]",
|
|
"name": "invalid.illegal.character-not-allowed-here.marko"
|
|
},
|
|
"javascript-args": {
|
|
"begin": "(?=\\()",
|
|
"comment": "Javascript style arguments",
|
|
"contentName": "source.js",
|
|
"end": "(?<=\\))",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"javascript-comment-line": {
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "JavaScript // single line comment",
|
|
"contentName": "source.js",
|
|
"match": "\\s*//.*$"
|
|
},
|
|
"javascript-comment-multiline": {
|
|
"begin": "\\s*(?=/\\*)",
|
|
"comment": "JavaScript /* block comment */",
|
|
"contentName": "source.js",
|
|
"end": "(?<=\\*/)",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"javascript-comments": {
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-comment-multiline"
|
|
},
|
|
{
|
|
"include": "#javascript-comment-line"
|
|
}
|
|
]
|
|
},
|
|
"javascript-enclosed": {
|
|
"comment": "Matches JavaScript content and ensures enclosed blocks are matched.",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-comments"
|
|
},
|
|
{
|
|
"include": "#javascript-args"
|
|
},
|
|
{
|
|
"begin": "(?={)",
|
|
"end": "(?<=})",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\\[)",
|
|
"end": "(?<=])",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=\")",
|
|
"end": "(?<=\")",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=')",
|
|
"end": "(?<=')",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?=`)",
|
|
"end": "(?<=`)",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "/(?!<[\\]})A-Z0-9.<%]\\s*/)(?!/?>|$)",
|
|
"captures": {
|
|
"0": {
|
|
"name": "string.regexp.js"
|
|
}
|
|
},
|
|
"contentName": "source.js",
|
|
"end": "/[gimsuy]*",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js#regexp"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?x)\\s*(?:\n\t\t\t\t\t\t\t\t(?:\\b(?:new|typeof|instanceof|in)\\b)| # Keyword operators\n\t\t\t\t\t\t\t\t\\&\\&|\\|\\|| # Logical operators\n\t\t\t\t\t\t\t\t[\\^|&]| # Bitwise operators\n\t\t\t\t\t\t\t\t[!=]=|[!=]==|<|<[=<]|=>| # Comparison operators (Note you cannot use * or ? here)\n\t\t\t\t\t\t\t\t[?:]| # Ternary operators\n\t\t\t\t\t\t\t\t[-+*%](?!-) # Arithmetic operators\n\t\t\t\t\t\t\t)",
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "(?=\\S)"
|
|
}
|
|
]
|
|
},
|
|
"javascript-expression": {
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-enclosed"
|
|
},
|
|
{
|
|
"captures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "Match identifiers and member expressions",
|
|
"match": "[0-9a-zA-Z$_.]+"
|
|
}
|
|
]
|
|
},
|
|
"javascript-statement": {
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-enclosed"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"open-tag-content": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-before-attrs"
|
|
},
|
|
{
|
|
"begin": "(?= )",
|
|
"comment": "Attributes begin after the first space within the tag name",
|
|
"end": "(?=/?>)",
|
|
"patterns": [
|
|
{
|
|
"include": "#attrs"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"placeholder": {
|
|
"begin": "\\$!?{",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.template-expression.begin.js"
|
|
}
|
|
},
|
|
"comment": "${ } placeholder",
|
|
"contentName": "source.js",
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.template-expression.end.js"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"scriptlet": {
|
|
"begin": "^\\s*(\\$)\\s+",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.scriptlet.marko"
|
|
}
|
|
},
|
|
"comment": "An inline JavaScript scriptlet.",
|
|
"contentName": "source.js",
|
|
"end": "$",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-statement"
|
|
}
|
|
]
|
|
},
|
|
"tag-before-attrs": {
|
|
"comment": "Everything in a tag before the attributes content",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
},
|
|
{
|
|
"comment": "Shorthand class or ID attribute",
|
|
"match": "[#.][a-zA-Z0-9_$][a-zA-Z0-9_$-]*",
|
|
"name": "entity.other.attribute-name.marko"
|
|
},
|
|
{
|
|
"begin": "/(?!/)",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.separator.key-value.marko"
|
|
}
|
|
},
|
|
"comment": "Variable for a tag",
|
|
"contentName": "source.js",
|
|
"end": "(?=:?\\=|\\s|>|$|\\||\\(|/)",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"comment": "Match identifiers",
|
|
"match": "[a-zA-Z$_][0-9a-zA-Z$_]*",
|
|
"name": "variable.other.constant.object.js"
|
|
},
|
|
{
|
|
"include": "source.js#object-binding-pattern"
|
|
},
|
|
{
|
|
"include": "source.js#array-binding-pattern"
|
|
},
|
|
{
|
|
"include": "source.js#var-single-variable"
|
|
},
|
|
{
|
|
"include": "#javascript-expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"applyEndPatternLast": 1,
|
|
"begin": "\\s*(:?=)\\s*",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"comment": "Default attribute value",
|
|
"contentName": "source.js",
|
|
"end": "(?=.|$)",
|
|
"name": "meta.embedded.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#javascript-expression"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\|",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.begin.marko"
|
|
}
|
|
},
|
|
"comment": "Parameters for a tag",
|
|
"end": "\\|",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.section.scope.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "source.js#function-parameters-body"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#html-args-or-method"
|
|
}
|
|
]
|
|
},
|
|
"tag-html": {
|
|
"comment": "Matches an HTML tag and its contents",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\s*(<)(?=(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\\b)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "HTML void elements",
|
|
"end": "/?>",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(<)(?=style\\.less\\b)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.marko"
|
|
}
|
|
},
|
|
"comment": "HTML style tag with less",
|
|
"end": "/>|(?<=\\>)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
},
|
|
{
|
|
"begin": ">",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "Style body content",
|
|
"contentName": "source.less",
|
|
"end": "\\s*(</)(style)?(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-less"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(<)(?=style\\.scss\\b)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.marko"
|
|
}
|
|
},
|
|
"comment": "HTML style tag with scss",
|
|
"end": "/>|(?<=\\>)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
},
|
|
{
|
|
"begin": ">",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "Style body content",
|
|
"contentName": "source.less",
|
|
"end": "\\s*(</)(style)?(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style-scss"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(<)(?=style\\b)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.marko"
|
|
}
|
|
},
|
|
"comment": "HTML style tag",
|
|
"end": "/>|(?<=\\>)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
},
|
|
{
|
|
"begin": ">",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "Style body content",
|
|
"contentName": "source.css",
|
|
"end": "\\s*(</)(style)?(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-style"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(<)(?=script\\b)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.marko"
|
|
}
|
|
},
|
|
"comment": "HTML script tag",
|
|
"end": "/>|(?<=\\>)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
},
|
|
{
|
|
"begin": ">",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "Script body content",
|
|
"contentName": "source.js",
|
|
"end": "\\s*(</)(script)?(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#content-embedded-script"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(<)(?=[a-zA-Z0-9_$@])",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.begin.marko"
|
|
}
|
|
},
|
|
"comment": "HTML normal tag",
|
|
"end": "/>|(?<=\\>)",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#open-tag-content"
|
|
},
|
|
{
|
|
"begin": ">",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"comment": "Body content",
|
|
"end": "\\s*(</)([a-zA-Z0-9_$:@-]+)?(.*?)(>)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "#tag-name"
|
|
}
|
|
]
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "#invalid"
|
|
}
|
|
]
|
|
},
|
|
"4": {
|
|
"name": "punctuation.definition.tag.end.marko"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#content-html-mode"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tag-name": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\${",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.template-expression.begin.js"
|
|
}
|
|
},
|
|
"comment": "Dynamic tag.",
|
|
"end": "}",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.template-expression.end.js"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.tag.marko"
|
|
},
|
|
"2": {
|
|
"name": "storage.type.marko.css"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"comment": "Core tag.",
|
|
"match": "(attrs|return|import)(?=\\b)",
|
|
"name": "support.type.builtin.marko"
|
|
},
|
|
{
|
|
"comment": "Core tag.",
|
|
"match": "(for|if|while|else-if|else|macro|tag|await|let|const|effect|set|get|id|lifecycle)(?=\\b)",
|
|
"name": "support.function.marko"
|
|
},
|
|
{
|
|
"comment": "Attribute tag.",
|
|
"match": "@.+",
|
|
"name": "entity.other.attribute-name.marko"
|
|
},
|
|
{
|
|
"comment": "Native or userland tag.",
|
|
"match": ".+",
|
|
"name": "entity.name.tag.marko"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(style)\\.([a-zA-Z0-9$_-]+(?:\\.[a-zA-Z0-9$_-]+)*)|([a-zA-Z0-9_$@][a-zA-Z0-9_$@:-]*)"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "text.marko",
|
|
"uuid": "46c8c3f8-cabe-466a-a633-5deafdc51253"
|
|
}
|