437 lines
9.8 KiB
JSON
437 lines
9.8 KiB
JSON
{
|
|
"displayName": "QML",
|
|
"name": "qml",
|
|
"patterns": [
|
|
{
|
|
"match": "\\bpragma\\s+Singleton\\b",
|
|
"name": "constant.language.qml"
|
|
},
|
|
{
|
|
"include": "#import-statements"
|
|
},
|
|
{
|
|
"include": "#object"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
}
|
|
],
|
|
"repository": {
|
|
"attributes-dictionary": {
|
|
"patterns": [
|
|
{
|
|
"include": "#typename"
|
|
},
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#identifier"
|
|
},
|
|
{
|
|
"include": "#attributes-value"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
}
|
|
]
|
|
},
|
|
"attributes-value": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(?<=\\w)\\s*:\\s*(?=[A-Z]\\w*\\s*\\{)",
|
|
"description": "A QML object as value.",
|
|
"end": "(?<=})",
|
|
"patterns": [
|
|
{
|
|
"include": "#object"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=\\w)\\s*:\\s*\\[",
|
|
"description": "A list as value.",
|
|
"end": "](.*)$",
|
|
"endCaptures": {
|
|
"0": {
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#object"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=\\w)\\s*:(?=\\s*\\{?\\s*$)",
|
|
"description": "A block of JavaScript code as value.",
|
|
"end": "(?<=})",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\{",
|
|
"contentName": "meta.embedded.block.js",
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=\\w)\\s*:",
|
|
"contentName": "meta.embedded.line.js",
|
|
"description": "A JavaScript expression as value.",
|
|
"end": ";|$|(?=})",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comment": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(//:)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.class.qml.tr"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-contents"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(//[=|~])\\s*([$A-Z_a-z][]$.\\[\\w]*)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.class.qml.tr"
|
|
},
|
|
"2": {
|
|
"name": "variable.other.qml.tr"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-contents"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(//)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "comment.line.double-slash.qml"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-contents"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(/\\*)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "comment.line.double-slash.qml"
|
|
}
|
|
},
|
|
"end": "(\\*/)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "comment.line.double-slash.qml"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#comment-contents"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"comment-contents": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\b(TODO|DEBUG|XXX)\\b",
|
|
"name": "constant.language.qml"
|
|
},
|
|
{
|
|
"match": "\\b(BUG|FIXME)\\b",
|
|
"name": "invalid"
|
|
},
|
|
{
|
|
"match": ".",
|
|
"name": "comment.line.double-slash.qml"
|
|
}
|
|
]
|
|
},
|
|
"data-types": {
|
|
"patterns": [
|
|
{
|
|
"description": "QML basic data types.",
|
|
"match": "\\b(bool|double|enum|int|list|real|string|url|variant|var)\\b",
|
|
"name": "storage.type.qml"
|
|
},
|
|
{
|
|
"description": "QML modules basic data types.",
|
|
"match": "\\b(date|point|rect|size)\\b",
|
|
"name": "support.type.qml"
|
|
}
|
|
]
|
|
},
|
|
"group-attributes": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b([A-Z_a-z]\\w*)\\s*\\{",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "variable.parameter.qml"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
},
|
|
{
|
|
"include": "#attributes-dictionary"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"identifier": {
|
|
"description": "The name of variable, key, signal and etc.",
|
|
"patterns": [
|
|
{
|
|
"match": "\\b[A-Z_a-z]\\w*\\b",
|
|
"name": "variable.parameter.qml"
|
|
}
|
|
]
|
|
},
|
|
"import-statements": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(import)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.import.qml"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"match": "\\bas\\b",
|
|
"name": "keyword.control.as.qml"
|
|
},
|
|
{
|
|
"include": "#string"
|
|
},
|
|
{
|
|
"description": "<Version.Number>",
|
|
"match": "\\b\\d+\\.\\d+\\b",
|
|
"name": "constant.numeric.qml"
|
|
},
|
|
{
|
|
"description": "as <Namespace>",
|
|
"match": "(?<=as)\\s+[A-Z]\\w*\\b",
|
|
"name": "entity.name.type.qml"
|
|
},
|
|
{
|
|
"include": "#identifier"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"keywords": {
|
|
"patterns": [
|
|
{
|
|
"include": "#data-types"
|
|
},
|
|
{
|
|
"include": "#reserved-words"
|
|
}
|
|
]
|
|
},
|
|
"method-attributes": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(function)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.qml"
|
|
}
|
|
},
|
|
"end": "(?<=})",
|
|
"patterns": [
|
|
{
|
|
"begin": "([A-Z_a-z]\\w*)\\s*\\(",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.qml"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"patterns": [
|
|
{
|
|
"include": "#identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\{",
|
|
"contentName": "meta.embedded.block.js",
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"object": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b([A-Z]\\w*)\\s*\\{",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.type.qml"
|
|
}
|
|
},
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
},
|
|
{
|
|
"include": "#group-attributes"
|
|
},
|
|
{
|
|
"include": "#method-attributes"
|
|
},
|
|
{
|
|
"include": "#signal-attributes"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
},
|
|
{
|
|
"include": "#attributes-dictionary"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"reserved-words": {
|
|
"patterns": [
|
|
{
|
|
"description": "Attribute modifier.",
|
|
"match": "\\b(default|alias|readonly|required)\\b",
|
|
"name": "storage.modifier.qml"
|
|
},
|
|
{
|
|
"match": "\\b(property|id|on)\\b",
|
|
"name": "keyword.other.qml"
|
|
},
|
|
{
|
|
"description": "Special words for signal handlers including property change.",
|
|
"match": "\\b(on[A-Z]\\w*(Changed)?)\\b",
|
|
"name": "keyword.control.qml"
|
|
}
|
|
]
|
|
},
|
|
"signal-attributes": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\b(signal)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.qml"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"begin": "([A-Z_a-z]\\w*)\\s*\\(",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.qml"
|
|
}
|
|
},
|
|
"end": "\\)",
|
|
"patterns": [
|
|
{
|
|
"include": "#keywords"
|
|
},
|
|
{
|
|
"include": "#identifier"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#identifier"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"string": {
|
|
"description": "String literal with double or signle quote.",
|
|
"patterns": [
|
|
{
|
|
"begin": "'",
|
|
"end": "'",
|
|
"name": "string.quoted.single.qml"
|
|
},
|
|
{
|
|
"begin": "\"",
|
|
"end": "\"",
|
|
"name": "string.quoted.double.qml"
|
|
}
|
|
]
|
|
},
|
|
"typename": {
|
|
"description": "The name of type. First letter must be uppercase.",
|
|
"patterns": [
|
|
{
|
|
"match": "\\b[A-Z]\\w*\\b",
|
|
"name": "entity.name.type.qml"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "source.qml"
|
|
}
|