{"name":"Vala","scopeName":"source.vala","patterns":[{"name":"meta.using.vala","match":"^\\s*(using)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?","captures":{"1":{"name":"keyword.other.using.vala"},"2":{"name":"storage.modifier.using.vala"},"3":{"name":"punctuation.terminator.vala"}}},{"include":"#code"}],"repository":{"all-types":{"patterns":[{"include":"#primitive-arrays"},{"include":"#primitive-types"},{"include":"#object-types"}]},"annotations":{"patterns":[{"name":"meta.declaration.annotation.vala","begin":"(@[^ (]+)(\\()","end":"(\\))","patterns":[{"match":"(\\w*)\\s*(=)","captures":{"1":{"name":"constant.other.key.vala"},"2":{"name":"keyword.operator.assignment.vala"}}},{"include":"#code"},{"name":"punctuation.seperator.property.vala","match":","}],"beginCaptures":{"1":{"name":"storage.type.annotation.vala"},"2":{"name":"punctuation.definition.annotation-arguments.begin.vala"}},"endCaptures":{"1":{"name":"punctuation.definition.annotation-arguments.end.vala"}}},{"name":"storage.type.annotation.vala","match":"@\\w*"}]},"anonymous-classes-and-new":{"begin":"\\bnew\\b","end":"(?\u003c=\\)|\\])(?!\\s*{)|(?\u003c=})|(?=;)","patterns":[{"begin":"(\\w+)\\s*(?=\\[)","end":"}|(?=;|\\))","patterns":[{"begin":"\\[","end":"\\]","patterns":[{"include":"#code"}]},{"begin":"{","end":"(?=})","patterns":[{"include":"#code"}]}],"beginCaptures":{"1":{"name":"storage.type.vala"}}},{"begin":"(?=\\w.*\\()","end":"(?\u003c=\\))","patterns":[{"include":"#object-types"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#code"}],"beginCaptures":{"1":{"name":"storage.type.vala"}}}]},{"name":"meta.inner-class.vala","begin":"{","end":"}","patterns":[{"include":"#class-body"}]}],"beginCaptures":{"0":{"name":"keyword.control.new.vala"}}},"assertions":{"patterns":[{"name":"meta.declaration.assertion.vala","begin":"\\b(assert|requires|ensures)\\s","end":"$","patterns":[{"name":"keyword.operator.assert.expression-seperator.vala","match":":"},{"include":"#code"}],"beginCaptures":{"1":{"name":"keyword.control.assert.vala"}}}]},"class":{"name":"meta.class.vala","begin":"(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)","end":"}","patterns":[{"include":"#storage-modifiers"},{"include":"#comments"},{"name":"meta.class.identifier.vala","match":"(class|(?:@)?interface|enum|struct|namespace)\\s+([\\w\\.]+)","captures":{"1":{"name":"storage.modifier.vala"},"2":{"name":"entity.name.type.class.vala"}}},{"name":"meta.definition.class.inherited.classes.vala","begin":":","end":"(?={|,)","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}],"beginCaptures":{"0":{"name":"storage.modifier.extends.vala"}}},{"name":"meta.definition.class.implemented.interfaces.vala","begin":"(,)\\s","end":"(?=\\{)","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"storage.modifier.implements.vala"}}},{"name":"meta.class.body.vala","begin":"{","end":"(?=})","patterns":[{"include":"#class-body"}]}],"endCaptures":{"0":{"name":"punctuation.section.class.end.vala"}}},"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":"#anonymous-classes-and-new"},{"include":"#keywords"},{"include":"#storage-modifiers"},{"include":"#strings"},{"include":"#all-types"}]},"comments":{"patterns":[{"name":"comment.block.empty.vala","match":"/\\*\\*/","captures":{"0":{"name":"punctuation.definition.comment.vala"}}},{"include":"text.html.javadoc"},{"include":"#comments-inline"}]},"comments-inline":{"patterns":[{"name":"comment.block.vala","begin":"/\\*","end":"\\*/","captures":{"0":{"name":"punctuation.definition.comment.vala"}}},{"match":"\\s*((//).*$\\n?)","captures":{"1":{"name":"comment.line.double-slash.vala"},"2":{"name":"punctuation.definition.comment.vala"}}}]},"constants-and-special-vars":{"patterns":[{"name":"constant.language.vala","match":"\\b(true|false|null)\\b"},{"name":"variable.language.vala","match":"\\b(this|base)\\b"},{"name":"constant.numeric.vala","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.other.vala","match":"(\\.)?\\b([A-Z][A-Z0-9_]+)(?!\u003c|\\.class|\\s*\\w+\\s*=)\\b","captures":{"1":{"name":"keyword.operator.dereference.vala"}}}]},"enums":{"begin":"^(?=\\s*[A-Z0-9_]+\\s*({|\\(|,))","end":"(?=;|})","patterns":[{"name":"meta.enum.vala","begin":"\\w+","end":"(?=,|;|})","patterns":[{"include":"#parens"},{"begin":"{","end":"}","patterns":[{"include":"#class-body"}]}],"beginCaptures":{"0":{"name":"constant.other.enum.vala"}}}]},"keywords":{"patterns":[{"name":"keyword.control.catch-exception.vala","match":"\\b(try|catch|finally|throw)\\b"},{"name":"keyword.control.vala","match":"\\?|:|\\?\\?"},{"name":"keyword.control.vala","match":"\\b(return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b"},{"name":"keyword.operator.vala","match":"\\b(typeof|is|as)\\b"},{"name":"keyword.operator.comparison.vala","match":"(==|!=|\u003c=|\u003e=|\u003c\u003e|\u003c|\u003e)"},{"name":"keyword.operator.assignment.vala","match":"(=)"},{"name":"keyword.operator.increment-decrement.vala","match":"(\\-\\-|\\+\\+)"},{"name":"keyword.operator.arithmetic.vala","match":"(\\-|\\+|\\*|\\/|%)"},{"name":"keyword.operator.logical.vala","match":"(!|\u0026\u0026|\\|\\|)"},{"name":"keyword.operator.dereference.vala","match":"(?\u003c=\\S)\\.(?=\\S)"},{"name":"punctuation.terminator.vala","match":";"},{"name":"keyword.operator.ownership","match":"(owned|unowned)"}]},"methods":{"name":"meta.method.vala","begin":"(?!new)(?=\\w.*\\s+)(?=[^=]+\\()","end":"}|(?=;)","patterns":[{"include":"#storage-modifiers"},{"name":"meta.method.identifier.vala","begin":"([\\~\\w\\.]+)\\s*\\(","end":"\\)","patterns":[{"include":"#parameters"}],"beginCaptures":{"1":{"name":"entity.name.function.vala"}}},{"name":"meta.method.return-type.vala","begin":"(?=\\w.*\\s+\\w+\\s*\\()","end":"(?=\\w+\\s*\\()","patterns":[{"include":"#all-types"}]},{"include":"#throws"},{"name":"meta.method.body.vala","begin":"{","end":"(?=})","patterns":[{"include":"#code"}]}]},"namespace":{"begin":"^(?=\\s*[A-Z0-9_]+\\s*({|\\(|,))","end":"(?=;|})","patterns":[{"name":"meta.namespace.vala","begin":"\\w+","end":"(?=,|;|})","patterns":[{"include":"#parens"},{"begin":"{","end":"}","patterns":[{"include":"#code"}]}],"beginCaptures":{"0":{"name":"constant.other.namespace.vala"}}}]},"object-types":{"patterns":[{"name":"storage.type.generic.vala","begin":"\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)\u003c","end":"\u003e|[^\\w\\s,\\?\u003c\\[\\]]","patterns":[{"include":"#object-types"},{"name":"storage.type.generic.vala","begin":"\u003c","end":"\u003e|[^\\w\\s,\\[\\]\u003c]"}]},{"name":"storage.type.object.array.vala","begin":"\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)(?=\\[)","end":"(?=[^\\]\\s])","patterns":[{"begin":"\\[","end":"\\]","patterns":[{"include":"#code"}]}]},{"name":"storage.type.vala","match":"\\b(?:[a-z]\\w*(\\.))*[A-Z]+\\w*\\b","captures":{"1":{"name":"keyword.operator.dereference.vala"}}}]},"object-types-inherited":{"patterns":[{"name":"entity.other.inherited-class.vala","begin":"\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)\u003c","end":"\u003e|[^\\w\\s,\u003c]","patterns":[{"include":"#object-types"},{"name":"storage.type.generic.vala","begin":"\u003c","end":"\u003e|[^\\w\\s,\u003c]"}]},{"name":"entity.other.inherited-class.vala","match":"\\b(?:[a-z]\\w*(\\.))*[A-Z]+\\w*","captures":{"1":{"name":"keyword.operator.dereference.vala"}}}]},"parameters":{"patterns":[{"name":"storage.modifier.vala","match":"final"},{"include":"#primitive-arrays"},{"include":"#primitive-types"},{"include":"#object-types"},{"name":"variable.parameter.vala","match":"\\w+"}]},"parens":{"begin":"\\(","end":"\\)","patterns":[{"include":"#code"}]},"primitive-arrays":{"patterns":[{"name":"storage.type.primitive.array.vala","match":"\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(\\[\\])*\\b"}]},"primitive-types":{"patterns":[{"name":"storage.type.primitive.vala","match":"\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b"}]},"storage-modifiers":{"match":"\\b(public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b","captures":{"1":{"name":"storage.modifier.vala"}}},"strings":{"patterns":[{"name":"string.quoted.interpolated.vala","begin":"@\"","end":"\"","patterns":[{"name":"constant.character.escape.vala","match":"\\\\.|%[\\w\\.\\-]+|\\$(\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.vala"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.vala"}}},{"name":"string.quoted.double.vala","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.vala","match":"\\\\."},{"name":"constant.character.escape.vala","match":"%[\\w\\.\\-]+"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.vala"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.vala"}}},{"name":"string.quoted.single.vala","begin":"'","end":"'","patterns":[{"name":"constant.character.escape.vala","match":"\\\\."}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.vala"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.vala"}}},{"name":"string.quoted.triple.vala","begin":"\"\"\"","end":"\"\"\"","patterns":[{"name":"constant.character.escape.vala","match":"%[\\w\\.\\-]+"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.vala"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.vala"}}}]},"throws":{"name":"meta.throwables.vala","begin":"throws","end":"(?={|;)","patterns":[{"include":"#object-types"}],"beginCaptures":{"0":{"name":"storage.modifier.vala"}}},"values":{"patterns":[{"include":"#strings"},{"include":"#object-types"},{"include":"#constants-and-special-vars"}]}}}