{ "fileTypes": [ "gd" ], "scopeName": "source.gdscript", "name": "GDScript", "patterns": [ { "include": "#base_expression" }, { "include": "#logic_op" }, { "include": "#compare_op" }, { "include": "#arithmetic_op" }, { "include": "#assignment_op" }, { "include": "#keywords" }, { "include": "#self" }, { "include": "#const_def" }, { "include": "#type_declear"}, { "include": "#class_def" }, { "include": "#class_name"}, { "include": "#builtin_func" }, { "include": "#builtin_get_node_shorthand" }, { "include": "#builtin_classes" }, { "include": "#const_vars" }, { "include": "#class_new"}, { "include": "#class_is"}, { "include": "#class_enum"}, { "include": "#function-declaration" }, { "include": "#function-return-type" }, { "include": "#any-method" }, { "include": "#any-property" }, { "include": "#extends" }, { "include": "#pascal_case_class" } ], "repository": { "comment": { "captures": { "1": { "name": "punctuation.definition.comment.number-sign.gdscript" } }, "match": "(#).*$\\n?", "name": "comment.line.number-sign.gdscript" }, "strings": { "patterns": [{ "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.untitled", "match": "\\\\." } ], "name": "string.quoted.double.gdscript" }, { "begin": "'", "end": "'", "patterns": [ { "name": "constant.character.escape.untitled", "match": "\\\\." } ], "name": "string.quoted.single.gdscript" }, { "begin": "@\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.untitled", "match": "\\." } ], "name": "string.nodepath.gdscript" } ] }, "self": { "match": "\\bself\\b", "name": "variable.language.gdscript" }, "base_expression": { "patterns": [ { "include": "#strings"}, { "include": "#comment"}, { "include": "#letter"}, { "include": "#numbers"}, { "include": "#line-continuation"} ] }, "logic_op": { "match": "\\b(and|or|not)\\b", "name": "keyword.operator.wordlike.gdscript" }, "compare_op": { "match": "<=|>=|==|<|>|!=", "name": "keyword.operator.comparison.gdscript" }, "arithmetic_op": { "match": "\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~", "name": "keyword.operator.arithmetic.gdscript" }, "assignment_op": { "match": "=", "name": "keyword.operator.assignment.gdscript" }, "keywords": { "patterns": [ { "match": "\\b(?i:func|class|class_name|extends|is|in|onready|tool|static|export|setget|const|var|as|void|enum|preload|assert|yield|signal|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|in)\\b", "name": "keyword.language.gdscript" }, { "match": "\\b(?i:if|elif|else|for|while|break|continue|pass|return|match)\\b", "name": "keyword.control" } ] }, "letter": { "match": "\\b(?i:true|false|null)\\b", "name": "constant.language.gdscript" }, "numbers": { "patterns": [{ "match": "\\b(?i:0x\\h*)\\b", "name": "constant.numeric.integer.hexadecimal.gdscript" }, { "match": "\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))\\b", "name": "constant.numeric.float.gdscript" }, { "match": "\\b(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))\\b", "name": "constant.numeric.float.gdscript" }, { "match": "\\b(?i:(\\d+e[\\-\\+]?\\d+))\\b", "name": "constant.numeric.float.gdscript" }, { "match": "\\b\\d+\\b", "name": "constant.numeric.integer.gdscript" } ] }, "const_def": { "match": "\\b(?i:(const))\\s+([a-zA-Z_][a-zA-Z_0-9]*)", "captures": { "1": { "name": "storage.type.const.gdscript" }, "2": { "name": "constant.language.gdscript" } } }, "var_def": { "match": "\\b(?i:(var))\\s+([a-zA-Z_][a-zA-Z_0-9]*)", "captures": { "1": { "name": "storage.type.var.gdscript" }, "2": { "name": "variable.language.gdscript" } } }, "type_declear": { "match": "\\:\\s*([a-zA-Z_][a-zA-Z_0-9]*)", "captures": { "1": { "name": "entity.name.type.class.gdscript" } } }, "function-return-type": { "match": "\\)\\s*\\-\\>\\s*([a-zA-Z_][a-zA-Z_0-9]*)\\s*\\:", "captures": { "1": { "name": "entity.name.type.class.gdscript" } } }, "class_def": { "captures": { "1": { "name": "entity.name.type.class.gdscript" }, "2": { "name": "class.other.gdscript" } }, "match": "(?<=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)" }, "class_new": { "captures": { "1": { "name": "entity.name.type.class.gdscript" }, "2": { "name": "storage.type.new.gdscript" } }, "match": "\\b([a-zA-Z_][a-zA-Z_0-9]*).(new)\\(" }, "class_is": { "captures": { "1": { "name": "storage.type.is.gdscript" }, "2": { "name": "entity.name.type.class.gdscript" } }, "match": "\\s+(is)\\s+([a-zA-Z_][a-zA-Z_0-9]*)" }, "class_enum": { "captures": { "1": { "name": "entity.name.type.class.gdscript" }, "2": { "name": "constant.language.gdscript" } }, "match": "\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)" }, "class_name": { "captures": { "1": { "name": "entity.name.type.class.gdscript" }, "2": { "name": "class.other.gdscript" } }, "match": "(?<=class_name)\\s+([a-zA-Z_][a-zA-Z_0-9]*(\\.([a-zA-Z_][a-zA-Z_0-9]*))?)" }, "extends": { "match": "(?<=extends)\\s+[a-zA-Z_][a-zA-Z_0-9]*(\\.([a-zA-Z_][a-zA-Z_0-9]*))?", "name": "entity.other.inherited-class.gdscript" }, "builtin_func": { "match": "(?\"|')((\\.\\.\\/)+|\\/)?)[0-9A-Za-z_ ]+(\\/[0-9A-Za-z_ ]+)*\\k|[0-9A-Za-z_]+(\\/[0-9A-Za-z_]+)*)", "name": "support.function.builtin.shorthand.gdscript" }, "builtin_classes": { "match": "(?