openhab-vscode/meta/openhab.tmLanguage.json

707 lines
24 KiB
JSON

{
"fileTypes": [
"rules",
"items",
"sitemap",
"things",
"script",
"persist"
],
"foldingStartMarker": "(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)",
"foldingStopMarker": "^\\s*(\\}|// \\}\\}\\}$)",
"keyEquivalent": "^~J",
"name": "openHAB",
"patterns": [{
"captures": {
"1": {
"name": "keyword.other.package.openhab"
},
"2": {
"name": "entity.name.package.openhab"
},
"3": {
"name": "punctuation.terminator.openhab"
}
},
"match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
"name": "meta.package.openhab"
},
{
"captures": {
"1": {
"name": "keyword.other.import.openhab"
},
"2": {
"name": "entity.name.package.openhab"
},
"3": {
"name": "punctuation.terminator.openhab"
}
},
"match": "^\\s*(import)\\s+(?:\\s*([^ ;$]+)\\s*(;)?)?$",
"name": "meta.import.openhab"
},
{
"captures": {
"1": {
"name": "keyword.other.import.openhab"
},
"2": {
"name": "keyword.other.static.openhab"
},
"3": {
"name": "entity.name.package.openhab"
},
"4": {
"name": "punctuation.terminator.openhab"
}
},
"match": "^\\s*(import)\\s+(static)\\s+(?:\\s*([^ ;$]+)\\s*(;)?)?$",
"name": "meta.import.static.openhab"
},
{
"captures": {
"1": {
"name": "keyword.other.import.openhab"
},
"2": {
"name": "keyword.other.static.openhab"
},
"3": {
"name": "variable.language.extension.openhab"
},
"4": {
"name": "entity.name.package.openhab"
},
"5": {
"name": "punctuation.terminator.openhab"
}
},
"match": "^\\s*(import)\\s+(static)\\s+(extension)\\s+(?:\\s*([^ ;$]+)\\s*(;)?)?$",
"name": "meta.import.static.extension.openhab"
},
{
"include": "#code"
}
],
"repository": {
"all-types": {
"patterns": [{
"include": "#primitive-arrays"
},
{
"include": "#primitive-types"
},
{
"include": "#object-types"
}
]
},
"annotations": {
"patterns": [{
"begin": "(@[^ (]+)(\\()",
"beginCaptures": {
"1": {
"name": "meta.tag.annotation.name.openhab"
},
"2": {
"name": "meta.tag.annotation-arguments.begin.openhab"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "meta.tag.annotation-arguments.end.openhab"
}
},
"name": "meta.tag.annotation.openhab",
"patterns": [{
"captures": {
"1": {
"name": "constant.other.key.openhab"
},
"2": {
"name": "keyword.operator.assignment.openhab"
}
},
"match": "(\\w*)\\s*(=)"
},
{
"include": "#code"
},
{
"match": ",",
"name": "punctuation.seperator.property.openhab"
}
]
},
{
"match": "@\\w*",
"name": "meta.tag.annotation.openhab"
}
]
},
"lambdas": {
"patterns": [{
"match": "(\\[)(?:\\s)",
"name": "meta.tag.lambda-start.openhab"
},
{
"match": "(?:\\s)(\\[)",
"name": "meta.tag.lambda-end.openhab"
}
]
},
"assertions": {
"patterns": [{
"begin": "\\b(assert)\\s",
"beginCaptures": {
"1": {
"name": "keyword.control.assert.openhab"
}
},
"end": "$",
"name": "meta.declaration.assertion.openhab",
"patterns": [{
"match": ":",
"name": "keyword.operator.assert.expression-seperator.openhab"
},
{
"include": "#code"
}
]
}]
},
"class": {
"begin": "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)",
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.section.class.end.openhab"
}
},
"name": "meta.class.openhab",
"patterns": [{
"include": "#storage-modifiers"
},
{
"include": "#comments"
},
{
"captures": {
"1": {
"name": "storage.modifier.openhab"
},
"2": {
"name": "entity.name.type.class.openhab"
}
},
"match": "(class|(?:@)?interface|enum)\\s+(\\w+)",
"name": "meta.class.identifier.openhab"
},
{
"begin": "eopenhabs",
"beginCaptures": {
"0": {
"name": "storage.modifier.eopenhabs.openhab"
}
},
"end": "(?={|implements)",
"name": "meta.definition.class.inherited.classes.openhab",
"patterns": [{
"include": "#object-types-inherited"
},
{
"include": "#comments"
}
]
},
{
"begin": "(implements)\\s",
"beginCaptures": {
"1": {
"name": "storage.modifier.implements.openhab"
}
},
"end": "(?=\\s*eopenhabs|\\{)",
"name": "meta.definition.class.implemented.interfaces.openhab",
"patterns": [{
"include": "#object-types-inherited"
},
{
"include": "#comments"
}
]
},
{
"begin": "{",
"end": "(?=})",
"name": "meta.class.body.openhab",
"patterns": [{
"include": "#class-body"
}]
}
]
},
"class-body": {
"patterns": [{
"include": "#comments"
},
{
"include": "#class"
},
{
"include": "#enums"
},
{
"include": "#methods"
},
{
"include": "#annotations"
},
{
"include": "#storage-modifiers"
},
{
"include": "#code"
}
]
},
"code": {
"patterns": [{
"include": "#comments"
},
{
"include": "#class"
},
{
"begin": "{",
"end": "}",
"patterns": [{
"include": "#code"
}]
},
{
"include": "#assertions"
},
{
"include": "#parens"
},
{
"include": "#constants-and-special-vars"
},
{
"include": "#keywords"
},
{
"include": "#storage-modifiers"
},
{
"include": "#strings"
},
{
"include": "#all-types"
}
]
},
"comments": {
"patterns": [{
"captures": {
"0": {
"name": "punctuation.definition.comment.openhab"
}
},
"match": "/\\*\\*/",
"name": "comment.block.empty.openhab"
},
{
"include": "text.html.javadoc"
},
{
"include": "#comments-inline"
}
]
},
"comments-inline": {
"patterns": [{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.openhab"
}
},
"end": "\\*/",
"name": "comment.block.openhab"
},
{
"captures": {
"1": {
"name": "comment.line.double-slash.openhab"
},
"2": {
"name": "punctuation.definition.comment.openhab"
}
},
"match": "\\s*((//).*$\\n?)"
}
]
},
"constants-and-special-vars": {
"patterns": [{
"match": "\\b(true|false|null)\\b",
"name": "constant.language.openhab"
},
{
"match": "\\b(this|new|super|it)\\b",
"name": "variable.language.openhab"
},
{
"match": "\\b(Item|Thing|Bridge|Time)\\b",
"name": "variable.language.openhab"
},
{
"match": "\\b(Color|Contact|DateTime|Dimmer|Group|Number|Player|Rollershutter|String|Switch|Location)\\b",
"name": "variable.language.openhab"
},
{
"match": "\\b(Frame|Default|Text|Group|Switch|Selection|Setpoint|Slider|Colorpicker|Chart|Webview|Image|Video)\\b",
"name": "variable.language.openhab"
},
{
"match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\\b",
"name": "constant.numeric.openhab"
},
{
"match": "\\b(received|command|update|triggered|changed|from|to|started|shuts down)\\b",
"name": "constant.other.enum.openhab"
},
{
"match": "\\b(INCREASE|DECREASE|NEXT|PREVIOUS|ON|OFF|OPEN|CLOSED|PLAY|PAUSE|REWIND|FASTFORWARD|STOP|MOVE|UP|DOWN)\\b",
"name": "constant.numeric.openhab"
},
{
"captures": {
"1": {
"name": "keyword.operator.dereference.openhab"
}
},
"match": "(\\.)?\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b",
"name": "constant.other.openhab"
}
]
},
"enums": {
"begin": "^(?=\\s*[A-Z0-9_]+\\s*({|\\(|,))",
"end": "(?=;|})",
"patterns": [{
"begin": "\\w+",
"beginCaptures": {
"0": {
"name": "constant.other.enum.openhab"
}
},
"end": "(?=,|;|})",
"name": "meta.enum.openhab",
"patterns": [{
"include": "#parens"
},
{
"begin": "{",
"end": "}",
"patterns": [{
"include": "#class-body"
}]
}
]
}]
},
"keywords": {
"patterns": [{
"match": "\\b(try|catch|finally|throw)\\b",
"name": "keyword.control.catch-exception.openhab"
},
{
"match": "\\b(rule|when|then|end)\\b",
"name": "keyword.control.openhab"
},
{
"match": "\\b(sitemap|channel)\\b",
"name": "keyword.control.openhab"
},
{
"match": "\\?|:",
"name": "keyword.control.openhab"
},
{
"match": "\\b((?!<)(return|break|case|continue|default|do|while|for|switch|if|else)(?!>))\\b",
"name": "keyword.control.openhab"
},
{
"match": "\\b(instanceof)\\b",
"name": "keyword.operator.openhab"
},
{
"match": "(==|===|!==|!=|<=|>=|<>|<|>)",
"name": "keyword.operator.comparison.openhab"
},
{
"match": "(=)",
"name": "keyword.operator.assignment.openhab"
},
{
"match": "(\\-\\-|\\+\\+)",
"name": "keyword.operator.increment-decrement.openhab"
},
{
"match": "(\\-|\\+|\\*|\\/|%)",
"name": "keyword.operator.arithmetic.openhab"
},
{
"match": "(!|&&|\\|\\|)",
"name": "keyword.operator.logical.openhab"
},
{
"match": "(?<=\\S)\\.(?=\\S)",
"name": "keyword.operator.dereference.openhab"
},
{
"match": ";",
"name": "punctuation.terminator.openhab"
}
]
},
"methods": {
"begin": "(def|override)\\s+(?!new)(?=\\w.*\\s+)(?=[^=]+\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.keyword.openhab"
}
},
"end": "}|(?=;)",
"name": "meta.method.openhab",
"patterns": [{
"include": "#storage-modifiers"
},
{
"begin": "(\\w+)\\s*\\(",
"beginCaptures": {
"1": {
"name": "entity.name.function.openhab"
}
},
"end": "\\)",
"name": "meta.method.identifier.openhab",
"patterns": [{
"include": "#parameters"
}]
},
{
"begin": "(?=\\w.*\\s+\\w+\\s*\\()",
"end": "(?=\\w+\\s*\\()",
"name": "meta.method.return-type.openhab",
"patterns": [{
"include": "#all-types"
}]
},
{
"include": "#throws"
},
{
"begin": "{",
"end": "(?=})",
"name": "meta.method.body.openhab",
"patterns": [{
"include": "#code"
}]
}
]
},
"object-types": {
"patterns": [{
"begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)<",
"end": ">|[^\\w\\s,\\?<\\[\\]]",
"name": "storage.type.generic.openhab",
"patterns": [{
"include": "#object-types"
},
{
"begin": "<",
"end": ">|[^\\w\\s,\\[\\]<]",
"name": "storage.type.generic.openhab"
}
]
},
{
"begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)(?=\\[)",
"end": "(?=[^\\]\\s])",
"name": "storage.type.object.array.openhab",
"patterns": [{
"begin": "\\[",
"end": "\\]",
"patterns": [{
"include": "#code"
}]
}]
},
{
"captures": {
"1": {
"name": "keyword.operator.dereference.openhab"
}
},
"match": "(?<=\\s|\\=|\\(|\\,|\\[)\\b[a-zA-Z]+\\w*\\b(?=\\s|\\.|\\)|\\,|\\={2})",
"name": "entity.name.type.class.openhab"
},
{
"captures": {
"1": {
"name": "keyword.operator.dereference.openhab"
}
},
"match": "^\\s*(\\.)(?=\\w+\\b)",
"name": "storage.type.openhab"
}
]
},
"object-types-inherited": {
"patterns": [{
"begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)<",
"end": ">|[^\\w\\s,<]",
"name": "entity.other.inherited-class.openhab",
"patterns": [{
"include": "#object-types"
},
{
"begin": "<",
"end": ">|[^\\w\\s,<]",
"name": "storage.type.generic.openhab"
}
]
},
{
"captures": {
"1": {
"name": "keyword.operator.dereference.openhab"
}
},
"match": "\\b(?:[a-z]\\w*(\\.))*[A-Z]+\\w*",
"name": "entity.other.inherited-class.openhab"
}
]
},
"parameters": {
"patterns": [{
"match": "(final|var|val)",
"name": "storage.modifier.openhab"
},
{
"include": "#primitive-arrays"
},
{
"include": "#primitive-types"
},
{
"include": "#object-types"
},
{
"match": "\\w+",
"name": "variable.parameter.openhab"
}
]
},
"parens": {
"begin": "\\(",
"end": "\\)",
"patterns": [{
"include": "#code"
}]
},
"primitive-arrays": {
"patterns": [{
"match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b",
"name": "storage.type.primitive.array.openhab"
}]
},
"primitive-types": {
"patterns": [{
"match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b",
"name": "storage.type.primitive.openhab"
}]
},
"storage-modifiers": {
"captures": {
"1": {
"name": "storage.modifier.openhab"
}
},
"match": "\\b(public|private|protected|package|static|var|val|final|native|synchronized|abstract|threadsafe|transient)\\b"
},
"strings": {
"patterns": [{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.openhab"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.openhab"
}
},
"name": "string.quoted.double.openhab",
"patterns": [{
"match": "\\\\.",
"name": "constant.character.escape.openhab"
}]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.openhab"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.openhab"
}
},
"name": "string.quoted.single.openhab",
"patterns": [{
"match": "\\\\.",
"name": "constant.character.escape.openhab"
}]
}
]
},
"throws": {
"begin": "throws",
"beginCaptures": {
"0": {
"name": "storage.modifier.openhab"
}
},
"end": "(?={|;)",
"name": "meta.throwables.openhab",
"patterns": [{
"include": "#object-types"
}]
},
"values": {
"patterns": [{
"include": "#strings"
},
{
"include": "#object-types"
},
{
"include": "#constants-and-special-vars"
}
]
}
},
"scopeName": "source.openhab"
}