{ "displayName": "Lua", "name": "lua", "patterns": [ { "begin": "\\b(?:(local)\\s+)?(function)\\b(?![,:])", "beginCaptures": { "1": { "name": "keyword.local.lua" }, "2": { "name": "keyword.control.lua" } }, "end": "(?<=[-\\]\"')\\[{}])", "name": "meta.function.lua", "patterns": [ { "include": "#comment" }, { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.parameters.begin.lua" } }, "end": "(\\))|(?=[-\\]\"'.\\[{}])", "endCaptures": { "1": { "name": "punctuation.definition.parameters.finish.lua" } }, "name": "meta.parameter.lua", "patterns": [ { "include": "#comment" }, { "match": "[A-Z_a-z][0-9A-Z_a-z]*", "name": "variable.parameter.function.lua" }, { "match": ",", "name": "punctuation.separator.arguments.lua" }, { "begin": ":", "beginCaptures": { "0": { "name": "punctuation.separator.arguments.lua" } }, "end": "(?=[),])", "patterns": [ { "include": "#emmydoc.type" } ] } ] }, { "match": "\\b([A-Z_a-z][0-9A-Z_a-z]*)\\b\\s*(?=:)", "name": "entity.name.class.lua" }, { "match": "\\b([A-Z_a-z][0-9A-Z_a-z]*)\\b", "name": "entity.name.function.lua" } ] }, { "match": "(?" }, { "match": "<[*A-Z_a-z][-*.0-9A-Z_a-z]*>", "name": "storage.type.generic.lua" }, { "match": "\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\b", "name": "keyword.control.lua" }, { "match": "\\b(local)\\b", "name": "keyword.local.lua" }, { "match": "\\b(function)\\b(?![,:])", "name": "keyword.control.lua" }, { "match": "(?=?|(?]", "name": "keyword.operator.lua" } ] }, { "begin": "(?<=---)[\\t ]*@see", "beginCaptures": { "0": { "name": "storage.type.annotation.lua" } }, "end": "(?=[\\n#@])", "patterns": [ { "match": "\\b([*A-Z_a-z][-*.0-9A-Z_a-z]*)", "name": "support.class.lua" }, { "match": "#", "name": "keyword.operator.lua" } ] }, { "begin": "(?<=---)[\\t ]*@diagnostic", "beginCaptures": { "0": { "name": "storage.type.annotation.lua" } }, "end": "(?=[\\n#@])", "patterns": [ { "begin": "([-0-9A-Z_a-z]+)[\\t ]*(:)?", "beginCaptures": { "1": { "name": "keyword.other.unit" }, "2": { "name": "keyword.operator.unit" } }, "end": "(?=\\n)", "patterns": [ { "match": "\\b([*A-Z_a-z][-0-9A-Z_a-z]*)", "name": "support.class.lua" }, { "match": ",", "name": "keyword.operator.lua" } ] } ] }, { "begin": "(?<=---)[\\t ]*@module", "beginCaptures": { "0": { "name": "storage.type.annotation.lua" } }, "end": "(?=[\\n#@])", "patterns": [ { "include": "#string" } ] }, { "match": "(?<=---)[\\t ]*@(async|nodiscard)", "name": "storage.type.annotation.lua" }, { "begin": "(?<=---)\\|\\s*[+>]?", "beginCaptures": { "0": { "name": "storage.type.annotation.lua" } }, "end": "(?=[\\n#@])", "patterns": [ { "include": "#string" } ] } ] }, "emmydoc.type": { "patterns": [ { "begin": "\\bfun\\b", "beginCaptures": { "0": { "name": "keyword.control.lua" } }, "end": "(?=[#\\s])", "patterns": [ { "match": "[(),:?][\\t ]*", "name": "keyword.operator.lua" }, { "match": "([A-Z_a-z][-\\]*,.0-9<>A-\\[_a-z]*)(?", "name": "storage.type.generic.lua" }, { "match": "\\basync\\b", "name": "entity.name.tag.lua" }, { "match": "[,:?`{|}][\\t ]*", "name": "keyword.operator.lua" }, { "begin": "(?=[\"'*.A-\\[_a-z])", "end": "(?=[#),:?|}\\s])", "patterns": [ { "match": "([-\\]*,.0-9<>A-\\[_a-z]+)(?