tm-grammars
Version:
Collecton of TextMate grammars in JSON
1,127 lines (1,126 loc) • 29.2 kB
JSON
{
"displayName": "GDScript",
"fileTypes": [
"gd"
],
"name": "gdscript",
"patterns": [
{
"include": "#statement"
},
{
"include": "#expression"
}
],
"repository": {
"annotated_parameter": {
"begin": "\\s*([A-Z_a-z]\\w*)\\s*(:)\\s*([A-Z_a-z]\\w*)?",
"beginCaptures": {
"1": {
"name": "variable.parameter.function.language.gdscript"
},
"2": {
"name": "punctuation.separator.annotation.gdscript"
},
"3": {
"name": "entity.name.type.class.gdscript"
}
},
"end": "(,)|(?=\\))",
"endCaptures": {
"1": {
"name": "punctuation.separator.parameters.gdscript"
}
},
"patterns": [
{
"include": "#expression"
},
{
"match": "=(?!=)",
"name": "keyword.operator.assignment.gdscript"
}
]
},
"annotations": {
"captures": {
"1": {
"name": "entity.name.function.decorator.gdscript"
},
"2": {
"name": "entity.name.function.decorator.gdscript"
}
},
"match": "(@)(abstract|export|export_category|export_color_no_alpha|export_custom|export_dir|export_enum|export_exp_easing|export_file|export_file_path|export_flags|export_flags_2d_navigation|export_flags_2d_physics|export_flags_2d_render|export_flags_3d_navigation|export_flags_3d_physics|export_flags_3d_render|export_flags_avoidance|export_global_dir|export_global_file|export_group|export_multiline|export_node_path|export_placeholder|export_range|export_storage|export_subgroup|export_tool_button|icon|onready|rpc|static_unload|tool|warning_ignore|warning_ignore_restore|warning_ignore_start)\\b"
},
"any_method": {
"match": "\\b([A-Z_a-z]\\w*)\\b(?=\\s*\\()",
"name": "entity.name.function.other.gdscript"
},
"any_property": {
"captures": {
"1": {
"name": "punctuation.accessor.gdscript"
},
"2": {
"name": "constant.language.gdscript"
},
"3": {
"name": "variable.other.property.gdscript"
}
},
"match": "\\b(\\.)\\s*(?<![#$%@])(?:([A-Z_][0-9A-Z_]*)|([A-Z_a-z]\\w*))\\b(?!\\()"
},
"any_variable": {
"match": "\\b(?<![#$%@])([A-Z_a-z]\\w*)\\b(?!\\()",
"name": "variable.other.gdscript"
},
"arithmetic_operator": {
"match": "->|\\+=|-=|\\*\\*=|\\*=|\\^=|/=|%=|&=|~=|\\|=|\\*\\*|[-%*+/]",
"name": "keyword.operator.arithmetic.gdscript"
},
"assignment_operator": {
"match": "=",
"name": "keyword.operator.assignment.gdscript"
},
"base_expression": {
"patterns": [
{
"include": "#builtin_get_node_shorthand"
},
{
"include": "#nodepath_object"
},
{
"include": "#nodepath_function"
},
{
"include": "#strings"
},
{
"include": "#builtin_classes"
},
{
"include": "#const_vars"
},
{
"include": "#keywords"
},
{
"include": "#operators"
},
{
"include": "#lambda_declaration"
},
{
"include": "#class_declaration"
},
{
"include": "#variable_declaration"
},
{
"include": "#signal_declaration_bare"
},
{
"include": "#signal_declaration"
},
{
"include": "#function_declaration"
},
{
"include": "#statement_keyword"
},
{
"include": "#assignment_operator"
},
{
"include": "#in_keyword"
},
{
"include": "#control_flow"
},
{
"include": "#match_keyword"
},
{
"include": "#curly_braces"
},
{
"include": "#square_braces"
},
{
"include": "#round_braces"
},
{
"include": "#function_call"
},
{
"include": "#region"
},
{
"include": "#comment"
},
{
"include": "#func"
},
{
"include": "#letter"
},
{
"include": "#numbers"
},
{
"include": "#pascal_case_class"
},
{
"include": "#line_continuation"
}
]
},
"bitwise_operator": {
"match": "[\\&|]|<<=|>>=|<<|>>|[\\^~]",
"name": "keyword.operator.bitwise.gdscript"
},
"boolean_operator": {
"match": "(&&|\\|\\|)",
"name": "keyword.operator.boolean.gdscript"
},
"builtin_classes": {
"match": "(?<![^.]\\.|:)\\b(Vector2i??|Vector3i??|Vector4i??|Color|Rect2i??|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|Transform3D|AABB|String|Color|NodePath|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray|bool|int|float|Signal|Callable|StringName|Quaternion|Projection|PackedByteArray|PackedInt32Array|PackedInt64Array|PackedFloat32Array|PackedFloat64Array|PackedStringArray|PackedVector2Array|PackedVector2iArray|PackedVector3Array|PackedVector3iArray|PackedVector4Array|PackedColorArray|JSON|UPNP|OS|IP|JSONRPC|XRVRS|Variant|void)\\b",
"name": "entity.name.type.class.builtin.gdscript"
},
"builtin_get_node_shorthand": {
"patterns": [
{
"include": "#builtin_get_node_shorthand_quoted"
},
{
"include": "#builtin_get_node_shorthand_bare"
},
{
"include": "#builtin_get_node_shorthand_bare_multi"
}
]
},
"builtin_get_node_shorthand_bare": {
"captures": {
"1": {
"name": "keyword.control.flow.gdscript"
},
"2": {
"name": "constant.character.escape.gdscript"
},
"3": {
"name": "constant.character.escape.gdscript"
},
"4": {
"name": "constant.character.escape.gdscript"
}
},
"match": "(?<!/\\s*)(\\$\\s*|%|\\$%\\s*)(/\\s*)?([A-Z_a-z]\\w*)\\b(?!\\s*/)",
"name": "meta.literal.nodepath.bare.gdscript"
},
"builtin_get_node_shorthand_bare_multi": {
"begin": "(\\$\\s*|%|\\$%\\s*)(/\\s*)?([A-Z_a-z]\\w*)",
"beginCaptures": {
"1": {
"name": "keyword.control.flow.gdscript"
},
"2": {
"name": "constant.character.escape.gdscript"
},
"3": {
"name": "constant.character.escape.gdscript"
}
},
"end": "(?!\\s*/\\s*%?\\s*[A-Z_a-z]\\w*)",
"name": "meta.literal.nodepath.bare.gdscript",
"patterns": [
{
"captures": {
"1": {
"name": "constant.character.escape.gdscript"
},
"2": {
"name": "keyword.control.flow.gdscript"
},
"3": {
"name": "constant.character.escape.gdscript"
}
},
"match": "(/)\\s*(%)?\\s*([A-Z_a-z]\\w*)\\s*"
}
]
},
"builtin_get_node_shorthand_quoted": {
"begin": "(?:([$%])|([\\&@^]))([\"'])",
"beginCaptures": {
"1": {
"name": "keyword.control.flow.gdscript"
},
"2": {
"name": "variable.other.enummember.gdscript"
}
},
"end": "(\\3)",
"name": "string.quoted.gdscript meta.literal.nodepath.gdscript constant.character.escape.gdscript",
"patterns": [
{
"match": "%",
"name": "keyword.control.flow"
}
]
},
"class_declaration": {
"captures": {
"1": {
"name": "entity.name.type.class.gdscript"
},
"2": {
"name": "class.other.gdscript"
}
},
"match": "(?<=^class)\\s+([A-Z_a-z]\\w*)\\s*(?=:)"
},
"class_enum": {
"captures": {
"1": {
"name": "entity.name.type.class.gdscript"
},
"2": {
"name": "variable.other.enummember.gdscript"
}
},
"match": "\\b([A-Z][0-9A-Z_a-z]*)\\.([0-9A-Z_]+)"
},
"class_is": {
"captures": {
"1": {
"name": "storage.type.is.gdscript"
},
"2": {
"name": "entity.name.type.class.gdscript"
}
},
"match": "\\s+(is)\\s+([A-Z_a-z]\\w*)"
},
"class_name": {
"captures": {
"1": {
"name": "entity.name.type.class.gdscript"
},
"2": {
"name": "class.other.gdscript"
}
},
"match": "(?<=class_name)\\s+([A-Z_a-z]\\w*(\\.([A-Z_a-z]\\w*))?)"
},
"class_new": {
"captures": {
"1": {
"name": "entity.name.type.class.gdscript"
},
"2": {
"name": "storage.type.new.gdscript"
},
"3": {
"name": "punctuation.parenthesis.begin.gdscript"
}
},
"match": "\\b([A-Z_a-z]\\w*).(new)\\("
},
"comment": {
"captures": {
"1": {
"name": "punctuation.definition.comment.number-sign.gdscript"
}
},
"match": "(##?).*$\\n?",
"name": "comment.line.number-sign.gdscript"
},
"compare_operator": {
"match": "<=|>=|==|[<>]|!=?",
"name": "keyword.operator.comparison.gdscript"
},
"const_vars": {
"match": "\\b([A-Z_][0-9A-Z_]*)\\b",
"name": "variable.other.constant.gdscript"
},
"control_flow": {
"match": "\\b(?:if|elif|else|while|break|continue|pass|return|when|yield|await)\\b",
"name": "keyword.control.gdscript"
},
"curly_braces": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.dict.begin.gdscript"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.dict.end.gdscript"
}
},
"patterns": [
{
"include": "#base_expression"
},
{
"include": "#any_variable"
}
]
},
"expression": {
"patterns": [
{
"include": "#getter_setter_godot4"
},
{
"include": "#base_expression"
},
{
"include": "#assignment_operator"
},
{
"include": "#annotations"
},
{
"include": "#class_name"
},
{
"include": "#builtin_classes"
},
{
"include": "#class_new"
},
{
"include": "#class_is"
},
{
"include": "#class_enum"
},
{
"include": "#any_method"
},
{
"include": "#any_variable"
},
{
"include": "#any_property"
}
]
},
"extends_statement": {
"captures": {
"1": {
"name": "keyword.language.gdscript"
},
"2": {
"name": "entity.other.inherited-class.gdscript"
}
},
"match": "(extends)\\s+([A-Z_a-z]\\w*\\.[A-Z_a-z]\\w*)?"
},
"func": {
"match": "\\bfunc\\b",
"name": "keyword.language.gdscript storage.type.function.gdscript"
},
"function_arguments": {
"begin": "(\\()",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.gdscript"
}
},
"contentName": "meta.function.parameters.gdscript",
"end": "(?=\\))(?!\\)\\s*\\()",
"patterns": [
{
"match": "(,)",
"name": "punctuation.separator.arguments.gdscript"
},
{
"captures": {
"1": {
"name": "variable.parameter.function-call.gdscript"
},
"2": {
"name": "keyword.operator.assignment.gdscript"
}
},
"match": "\\b([A-Z_a-z]\\w*)\\s*(=)(?!=)"
},
{
"match": "=(?!=)",
"name": "keyword.operator.assignment.gdscript"
},
{
"include": "#base_expression"
},
{
"captures": {
"1": {
"name": "punctuation.definition.arguments.end.gdscript"
},
"2": {
"name": "punctuation.definition.arguments.begin.gdscript"
}
},
"match": "\\s*(\\))\\s*(\\()"
},
{
"include": "#letter"
},
{
"include": "#any_variable"
},
{
"include": "#any_property"
},
{
"include": "#keywords"
}
]
},
"function_call": {
"begin": "(?=\\b[A-Z_a-z]\\w*\\b\\()",
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.arguments.end.gdscript"
}
},
"name": "meta.function-call.gdscript",
"patterns": [
{
"include": "#function_name"
},
{
"include": "#function_arguments"
}
]
},
"function_declaration": {
"begin": "\\s*(func)\\s+([A-Z_a-z]\\w*)\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "keyword.language.gdscript storage.type.function.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
}
},
"end": "(:)",
"endCaptures": {
"1": {
"name": "punctuation.section.function.begin.gdscript"
}
},
"name": "meta.function.gdscript",
"patterns": [
{
"include": "#parameters"
},
{
"include": "#line_continuation"
},
{
"include": "#base_expression"
}
]
},
"function_name": {
"patterns": [
{
"include": "#builtin_classes"
},
{
"match": "\\b(preload)\\b",
"name": "keyword.language.gdscript"
},
{
"match": "\\b([A-Z_a-z]\\w*)\\b",
"name": "entity.name.function.gdscript"
}
]
},
"getter_setter_godot4": {
"patterns": [
{
"captures": {
"1": {
"name": "entity.name.function.gdscript"
},
"2": {
"name": "punctuation.separator.annotation.gdscript"
}
},
"match": "(get)\\s*(:)",
"name": "meta.variable.declaration.getter.gdscript"
},
{
"captures": {
"1": {
"name": "entity.name.function.gdscript"
},
"2": {
"name": "punctuation.definition.arguments.begin.gdscript"
},
"3": {
"name": "variable.other.gdscript"
},
"4": {
"name": "punctuation.definition.arguments.end.gdscript"
},
"5": {
"name": "punctuation.separator.annotation.gdscript"
}
},
"match": "(set)\\s*(\\()\\s*([A-Z_a-z]\\w*)\\s*(\\))\\s*(:)",
"name": "meta.variable.declaration.setter.gdscript"
}
]
},
"in_keyword": {
"patterns": [
{
"begin": "\\b(for)\\b",
"captures": {
"1": {
"name": "keyword.control.gdscript"
}
},
"end": ":",
"patterns": [
{
"match": "\\bin\\b",
"name": "keyword.control.gdscript"
},
{
"include": "#base_expression"
},
{
"include": "#any_variable"
},
{
"include": "#any_property"
}
]
},
{
"match": "\\bin\\b",
"name": "keyword.operator.wordlike.gdscript"
}
]
},
"keywords": {
"match": "\\b(?:class|class_name|is|onready|tool|static|export|as|enum|assert|breakpoint|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace|super|self)\\b",
"name": "keyword.language.gdscript"
},
"lambda_declaration": {
"begin": "(func)\\s?(?=\\()",
"beginCaptures": {
"1": {
"name": "keyword.language.gdscript storage.type.function.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
}
},
"end": "(:|(?=[\\n\"#']))",
"end2": "(\\s*(\\-\\>)\\s*(void\\w*)|([a-zA-Z_]\\w*)\\s*\\:)",
"endCaptures2": {
"1": {
"name": "punctuation.separator.annotation.result.gdscript"
},
"2": {
"name": "entity.name.type.class.builtin.gdscript"
},
"3": {
"name": "entity.name.type.class.gdscript markup.italic"
}
},
"name": "meta.function.gdscript",
"patterns": [
{
"include": "#parameters"
},
{
"include": "#line_continuation"
},
{
"include": "#base_expression"
},
{
"include": "#any_variable"
},
{
"include": "#any_property"
}
]
},
"letter": {
"match": "\\b(?:true|false|null)\\b",
"name": "constant.language.gdscript"
},
"line_continuation": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.separator.continuation.line.gdscript"
},
"2": {
"name": "invalid.illegal.line.continuation.gdscript"
}
},
"match": "(\\\\)\\s*(\\S.*$\\n?)"
},
{
"begin": "(\\\\)\\s*$\\n?",
"beginCaptures": {
"1": {
"name": "punctuation.separator.continuation.line.gdscript"
}
},
"end": "(?=^\\s*$)|(?!(\\s*[Rr]?('''|\"\"\"|[\"']))|\\G()$)",
"patterns": [
{
"include": "#base_expression"
}
]
}
]
},
"loose_default": {
"begin": "(=)",
"beginCaptures": {
"1": {
"name": "keyword.operator.gdscript"
}
},
"end": "(,)|(?=\\))",
"endCaptures": {
"1": {
"name": "punctuation.separator.parameters.gdscript"
}
},
"patterns": [
{
"include": "#expression"
}
]
},
"match_keyword": {
"captures": {
"1": {
"name": "keyword.control.gdscript"
}
},
"match": "^\\n\\s*(match)"
},
"nodepath_function": {
"begin": "(get_node_or_null|has_node|has_node_and_resource|find_node|get_node)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.gdscript"
},
"2": {
"name": "punctuation.definition.parameters.begin.gdscript"
}
},
"contentName": "meta.function.parameters.gdscript",
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.gdscript"
}
},
"name": "meta.function.gdscript",
"patterns": [
{
"begin": "([\"'])",
"end": "\\1",
"name": "string.quoted.gdscript meta.literal.nodepath.gdscript constant.character.escape.gdscript",
"patterns": [
{
"match": "%",
"name": "keyword.control.flow.gdscript"
}
]
},
{
"include": "#expression"
}
]
},
"nodepath_object": {
"begin": "(NodePath)\\s*\\(",
"beginCaptures": {
"1": {
"name": "support.class.library.gdscript"
}
},
"end": "\\)",
"name": "meta.literal.nodepath.gdscript",
"patterns": [
{
"begin": "([\"'])",
"end": "\\1",
"name": "string.quoted.gdscript constant.character.escape.gdscript",
"patterns": [
{
"match": "%",
"name": "keyword.control.flow.gdscript"
}
]
}
]
},
"numbers": {
"patterns": [
{
"match": "0b[01_]+",
"name": "constant.numeric.integer.binary.gdscript"
},
{
"match": "0x[_\\h]+",
"name": "constant.numeric.integer.hexadecimal.gdscript"
},
{
"match": "\\.[0-9][0-9_]*([Ee][-+]?[0-9_]+)?",
"name": "constant.numeric.float.gdscript"
},
{
"match": "([0-9][0-9_]*)\\.[0-9_]*([Ee][-+]?[0-9_]+)?",
"name": "constant.numeric.float.gdscript"
},
{
"match": "([0-9][0-9_]*)?\\.[0-9_]*([Ee][-+]?[0-9_]+)",
"name": "constant.numeric.float.gdscript"
},
{
"match": "[0-9][0-9_]*[Ee][-+]?[0-9_]+",
"name": "constant.numeric.float.gdscript"
},
{
"match": "-?[0-9][0-9_]*",
"name": "constant.numeric.integer.gdscript"
}
]
},
"operators": {
"patterns": [
{
"include": "#wordlike_operator"
},
{
"include": "#boolean_operator"
},
{
"include": "#arithmetic_operator"
},
{
"include": "#bitwise_operator"
},
{
"include": "#compare_operator"
}
]
},
"parameters": {
"begin": "(\\()",
"beginCaptures": {
"1": {
"name": "punctuation.definition.parameters.begin.gdscript"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.gdscript"
}
},
"name": "meta.function.parameters.gdscript",
"patterns": [
{
"include": "#annotated_parameter"
},
{
"captures": {
"1": {
"name": "variable.parameter.function.language.gdscript"
},
"2": {
"name": "punctuation.separator.parameters.gdscript"
}
},
"match": "([A-Z_a-z]\\w*)\\s*(?:(,)|(?=[\\n#)=]))"
},
{
"include": "#comment"
},
{
"include": "#loose_default"
}
]
},
"pascal_case_class": {
"match": "\\b([A-Z]+[0-9_a-z]*([A-Z]?[0-9_a-z]+)*[A-Z]?)\\b",
"name": "entity.name.type.class.gdscript"
},
"region": {
"match": "#(end)?region.*$\\n?",
"name": "keyword.language.region.gdscript"
},
"round_braces": {
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "punctuation.parenthesis.begin.gdscript"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.parenthesis.end.gdscript"
}
},
"patterns": [
{
"include": "#base_expression"
},
{
"include": "#any_variable"
}
]
},
"signal_declaration": {
"begin": "\\s*(signal)\\s+([A-Z_a-z]\\w*)\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "keyword.language.gdscript storage.type.function.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
}
},
"end": "((?=[\\n\"#']))",
"name": "meta.signal.gdscript",
"patterns": [
{
"include": "#parameters"
},
{
"include": "#line_continuation"
}
]
},
"signal_declaration_bare": {
"captures": {
"1": {
"name": "keyword.language.gdscript storage.type.function.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
}
},
"match": "\\s*(signal)\\s+([A-Z_a-z]\\w*)(?=[\\n\\s])",
"name": "meta.signal.gdscript"
},
"square_braces": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.list.begin.gdscript"
}
},
"end": "]",
"endCaptures": {
"0": {
"name": "punctuation.definition.list.end.gdscript"
}
},
"patterns": [
{
"include": "#base_expression"
},
{
"include": "#any_variable"
}
]
},
"statement": {
"patterns": [
{
"include": "#extends_statement"
}
]
},
"statement_keyword": {
"patterns": [
{
"match": "\\b(?<!\\.)(continue|assert|break|elif|else|if|pass|return|while)\\b",
"name": "keyword.control.flow.gdscript"
},
{
"match": "\\b(?<!\\.)(class)\\b",
"name": "storage.type.class.gdscript"
},
{
"captures": {
"1": {
"name": "keyword.control.flow.gdscript"
}
},
"match": "^\\s*(case|match)(?=\\s*([-\"#'(+:\\[{\\w\\d]|$))\\b"
}
]
},
"string_bracket_placeholders": {
"patterns": [
{
"captures": {
"1": {
"name": "constant.character.format.placeholder.other.gdscript"
},
"3": {
"name": "storage.type.format.gdscript"
},
"4": {
"name": "storage.type.format.gdscript"
}
},
"match": "(\\{\\{|}}|\\{\\w*(\\.[_[:alpha:]]\\w*|\\[[^]\"']+])*(![ars])?(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)?})",
"name": "meta.format.brace.gdscript"
},
{
"captures": {
"1": {
"name": "constant.character.format.placeholder.other.gdscript"
},
"3": {
"name": "storage.type.format.gdscript"
},
"4": {
"name": "storage.type.format.gdscript"
}
},
"match": "(\\{\\w*(\\.[_[:alpha:]]\\w*|\\[[^]\"']+])*(![ars])?(:)[^\\n\"'{}]*(?:\\{[^\\n\"'}]*?}[^\\n\"'{}]*)*})",
"name": "meta.format.brace.gdscript"
}
]
},
"string_percent_placeholders": {
"captures": {
"1": {
"name": "constant.character.format.placeholder.other.gdscript"
}
},
"match": "(%(\\([\\w\\s]*\\))?[- #+0]*(\\d+|\\*)?(\\.(\\d+|\\*))?([Lhl])?[%EFGXa-giorsux])",
"name": "meta.format.percent.gdscript"
},
"strings": {
"begin": "(r)?(\"\"\"|'''|[\"'])",
"beginCaptures": {
"1": {
"name": "constant.character.escape.gdscript"
}
},
"end": "\\2",
"name": "string.quoted.gdscript",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.gdscript"
},
{
"include": "#string_percent_placeholders"
},
{
"include": "#string_bracket_placeholders"
}
]
},
"variable_declaration": {
"begin": "\\b(?:(var)|(const))\\b",
"beginCaptures": {
"1": {
"name": "keyword.language.gdscript storage.type.var.gdscript"
},
"2": {
"name": "keyword.language.gdscript storage.type.const.gdscript"
}
},
"end": "$|;",
"name": "meta.variable.declaration.gdscript",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.separator.annotation.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
},
"3": {
"name": "entity.name.function.gdscript"
}
},
"match": "(:)?\\s*([gs]et)\\s+=\\s+([A-Z_a-z]\\w*)"
},
{
"match": ":=|=(?!=)",
"name": "keyword.operator.assignment.gdscript"
},
{
"captures": {
"1": {
"name": "punctuation.separator.annotation.gdscript"
},
"2": {
"name": "entity.name.type.class.gdscript"
}
},
"match": "(:)\\s*([A-Z_a-z]\\w*)?"
},
{
"captures": {
"1": {
"name": "keyword.language.gdscript"
},
"2": {
"name": "entity.name.function.gdscript"
},
"3": {
"name": "entity.name.function.gdscript"
}
},
"match": "(setget)\\s+([A-Z_a-z]\\w*)(?:,\\s*([A-Z_a-z]\\w*))?"
},
{
"include": "#expression"
},
{
"include": "#letter"
},
{
"include": "#any_variable"
},
{
"include": "#any_property"
},
{
"include": "#keywords"
}
]
},
"wordlike_operator": {
"match": "\\b(and|or|not)\\b",
"name": "keyword.operator.wordlike.gdscript"
}
},
"scopeName": "source.gdscript"
}