github-linguist 9.1.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/bin/github-linguist +3 -3
  3. data/grammars/etc.json +1 -1
  4. data/grammars/inline.edgeql.json +1 -1
  5. data/grammars/liquid.injection.json +1 -1
  6. data/grammars/source.4dm.json +1 -1
  7. data/grammars/source.QB64.json +1 -1
  8. data/grammars/source.abl.json +1 -1
  9. data/grammars/source.aiken.json +1 -0
  10. data/grammars/source.apex.json +1 -1
  11. data/grammars/source.ballerina.json +1 -1
  12. data/grammars/source.brs.json +1 -1
  13. data/grammars/source.c++.json +1 -1
  14. data/grammars/source.c.calendar.json +1 -0
  15. data/grammars/source.c.json +1 -1
  16. data/grammars/source.cl.json +1 -1
  17. data/grammars/source.clue.json +1 -0
  18. data/grammars/source.cmake.json +1 -1
  19. data/grammars/source.cmakecache.json +1 -1
  20. data/grammars/source.cobol.json +1 -1
  21. data/grammars/source.curlrc.json +1 -1
  22. data/grammars/source.daslang.json +1 -0
  23. data/grammars/source.dds.dspf.json +1 -1
  24. data/grammars/source.erlang.json +1 -1
  25. data/grammars/source.gdscript.json +1 -1
  26. data/grammars/source.git-revlist.json +1 -1
  27. data/grammars/source.gleam.json +1 -1
  28. data/grammars/source.hx.json +1 -1
  29. data/grammars/source.ilecobol.json +1 -0
  30. data/grammars/source.jai.json +1 -1
  31. data/grammars/source.json.comments.json +1 -1
  32. data/grammars/source.julia.console.json +1 -1
  33. data/grammars/source.julia.json +1 -1
  34. data/grammars/source.just.json +1 -1
  35. data/grammars/source.koka.json +1 -0
  36. data/grammars/source.leo.json +1 -0
  37. data/grammars/source.livescript.json +1 -1
  38. data/grammars/source.m2.json +1 -1
  39. data/grammars/source.m3u.json +1 -0
  40. data/grammars/source.moonbit.json +1 -1
  41. data/grammars/source.nasl.json +1 -1
  42. data/grammars/source.nim.json +1 -1
  43. data/grammars/source.nushell.json +1 -1
  44. data/grammars/source.objc.json +1 -1
  45. data/grammars/source.odin.json +1 -1
  46. data/grammars/source.openqasm.json +1 -0
  47. data/grammars/source.rascal.json +1 -1
  48. data/grammars/source.rescript.json +1 -1
  49. data/grammars/source.roc.json +1 -1
  50. data/grammars/source.rust.json +1 -1
  51. data/grammars/source.sail.json +1 -0
  52. data/grammars/source.slang.json +1 -1
  53. data/grammars/source.slint.json +1 -1
  54. data/grammars/source.smithy.json +1 -1
  55. data/grammars/source.soql.json +1 -1
  56. data/grammars/source.sway.json +1 -1
  57. data/grammars/source.tact.json +1 -1
  58. data/grammars/source.talon.json +1 -1
  59. data/grammars/source.templ.json +1 -1
  60. data/grammars/source.toc.json +1 -1
  61. data/grammars/source.torrc.json +1 -0
  62. data/grammars/source.typst.json +1 -1
  63. data/grammars/source.uplc.json +1 -0
  64. data/grammars/source.vba.json +1 -1
  65. data/grammars/source.vento.json +1 -0
  66. data/grammars/source.vue.json +1 -1
  67. data/grammars/source.wdl.json +1 -1
  68. data/grammars/source.wit.json +1 -1
  69. data/grammars/source.zmodel.json +1 -0
  70. data/grammars/text.adblock.json +1 -1
  71. data/grammars/text.html.liquid.json +1 -1
  72. data/grammars/text.html.vento.json +1 -0
  73. data/grammars/text.valve-cfg.json +1 -1
  74. data/grammars/version +1 -1
  75. data/lib/linguist/VERSION +1 -1
  76. data/lib/linguist/generated.rb +23 -1
  77. data/lib/linguist/heuristics.yml +8 -1
  78. data/lib/linguist/languages.json +1 -1
  79. data/lib/linguist/languages.yml +143 -10
  80. data/lib/linguist/samples.json +1 -1
  81. metadata +21 -11
  82. data/grammars/source.c.platform.json +0 -1
@@ -1 +1 @@
1
- {"name":"SOQL","scopeName":"source.soql","patterns":[{"include":"#soqlHeaderComment"},{"include":"#soql-query-expression"}],"repository":{"annotation-declaration":{"begin":"([@][_[:alpha:]]+)\\b","end":"(?\u003c=\\)|$)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"storage.type.annotation.apex"}}},"argument-list":{"begin":"\\(","end":"\\)","patterns":[{"include":"#named-argument"},{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"array-creation-expression":{"begin":"(?x)\n\\b(new)\\b\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\\s*\n(?=\\[)","end":"(?\u003c=\\])","patterns":[{"include":"#bracketed-argument-list"}],"beginCaptures":{"1":{"name":"keyword.control.new.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"block":{"begin":"\\{","end":"\\}","patterns":[{"include":"#statement"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"boolean-literal":{"patterns":[{"name":"constant.language.boolean.true.apex","match":"(?\u003c!\\.)\\btrue\\b"},{"name":"constant.language.boolean.false.apex","match":"(?\u003c!\\.)\\bfalse\\b"}]},"bracketed-argument-list":{"begin":"\\[","end":"\\]","patterns":[{"include":"#soql-query-expression"},{"include":"#named-argument"},{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.squarebracket.open.apex"}},"endCaptures":{"0":{"name":"punctuation.squarebracket.close.apex"}}},"break-or-continue-statement":{"match":"(?\u003c!\\.)\\b(?:(break)|(continue))\\b","captures":{"1":{"name":"keyword.control.flow.break.apex"},"2":{"name":"keyword.control.flow.continue.apex"}}},"cast-expression":{"match":"(?x)\n(\\()\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(\\))(?=\\s*@?[_[:alnum:]\\(])","captures":{"1":{"name":"punctuation.parenthesis.open.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"name":"punctuation.parenthesis.close.apex"}}},"catch-clause":{"begin":"(?\u003c!\\.)\\b(catch)\\b","end":"(?\u003c=\\})","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"match":"(?x)\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g\u003cidentifier\u003e)\\b)?","captures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"5":{"name":"entity.name.variable.local.apex"}}}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.catch.apex"}}},"class-declaration":{"begin":"(?=\\bclass\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"},{"include":"#extends-class"},{"include":"#implements-class"}],"beginCaptures":{"1":{"name":"keyword.other.class.apex"},"2":{"name":"entity.name.type.class.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#class-or-trigger-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"class-or-trigger-members":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#storage-modifier"},{"include":"#sharing-modifier"},{"include":"#type-declarations"},{"include":"#field-declaration"},{"include":"#property-declaration"},{"include":"#indexer-declaration"},{"include":"#variable-initializer"},{"include":"#constructor-declaration"},{"include":"#method-declaration"},{"include":"#punctuation-semicolon"}]},"colon-expression":{"name":"keyword.operator.conditional.colon.apex","match":":"},"comment":{"patterns":[{"name":"comment.block.apex","begin":"/\\*(\\*)?","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},{"begin":"(^\\s+)?(?=//)","end":"(?=$)","patterns":[{"name":"comment.block.documentation.apex","begin":"(?\u003c!/)///(?!/)","end":"(?=$)","patterns":[{"include":"#xml-doc-comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},{"name":"comment.line.double-slash.apex","begin":"(?\u003c!/)//(?:(?!/)|(?=//))","end":"(?=$)","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.apex"}}}]},"conditional-operator":{"begin":"(?\u003c!\\?)\\?(?!\\?|\\.|\\[)","end":":","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.operator.conditional.question-mark.apex"}},"endCaptures":{"0":{"name":"keyword.operator.conditional.colon.apex"}}},"constructor-declaration":{"begin":"(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\b","captures":{"1":{"name":"entity.name.function.apex"}}},{"begin":"(:)","end":"(?=\\{|=\u003e)","patterns":[{"include":"#constructor-initializer"}],"beginCaptures":{"1":{"name":"punctuation.separator.colon.apex"}}},{"include":"#parenthesized-parameter-list"},{"include":"#comment"},{"include":"#expression-body"},{"include":"#block"}]},"constructor-initializer":{"begin":"\\b(?:(this))\\b\\s*(?=\\()","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"name":"keyword.other.this.apex"}}},"date-literal-with-params":{"match":"\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\s*\\:\\d+)\\b","captures":{"1":{"name":"keyword.operator.query.date.apex"}}},"date-literals":{"match":"\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.date.apex"}}},"declarations":{"patterns":[{"include":"#type-declarations"},{"include":"#punctuation-semicolon"}]},"directives":{"patterns":[{"include":"#punctuation-semicolon"}]},"do-statement":{"begin":"(?\u003c!\\.)\\b(do)\\b","end":"(?=;|})","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.do.apex"}}},"element-access-expression":{"begin":"(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list","end":"(?\u003c=\\])(?!\\s*\\[)","patterns":[{"include":"#bracketed-argument-list"}],"beginCaptures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.property.apex"},"3":{"name":"keyword.operator.null-conditional.apex"}}},"else-part":{"begin":"(?\u003c!\\.)\\b(else)\\b","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.else.apex"}}},"enum-declaration":{"begin":"(?=\\benum\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?=enum)","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"match":"(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)","captures":{"1":{"name":"keyword.other.enum.apex"},"2":{"name":"entity.name.type.enum.apex"}}}]},{"begin":"\\{","end":"\\}","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#punctuation-comma"},{"begin":"@?[_[:alpha:]][_[:alnum:]]*","end":"(?=(,|\\}))","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"0":{"name":"entity.name.variable.enum-member.apex"}}}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"expression":{"patterns":[{"include":"#comment"},{"include":"#merge-expression"},{"include":"#support-expression"},{"include":"#throw-expression"},{"include":"#this-expression"},{"include":"#trigger-context-declaration"},{"include":"#conditional-operator"},{"include":"#expression-operators"},{"include":"#soql-query-expression"},{"include":"#object-creation-expression"},{"include":"#array-creation-expression"},{"include":"#invocation-expression"},{"include":"#member-access-expression"},{"include":"#element-access-expression"},{"include":"#cast-expression"},{"include":"#literal"},{"include":"#parenthesized-expression"},{"include":"#initializer-expression"},{"include":"#identifier"}]},"expression-body":{"begin":"=\u003e","end":"(?=[,\\);}])","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.operator.arrow.apex"}}},"expression-operators":{"patterns":[{"name":"keyword.operator.assignment.compound.apex","match":"\\*=|/=|%=|\\+=|-="},{"name":"keyword.operator.assignment.compound.bitwise.apex","match":"\\\u0026=|\\^=|\u003c\u003c=|\u003e\u003e=|\\|="},{"name":"keyword.operator.bitwise.shift.apex","match":"\u003c\u003c|\u003e\u003e"},{"name":"keyword.operator.comparison.apex","match":"==|!="},{"name":"keyword.operator.relational.apex","match":"\u003c=|\u003e=|\u003c|\u003e"},{"name":"keyword.operator.logical.apex","match":"\\!|\u0026\u0026|\\|\\|"},{"name":"keyword.operator.bitwise.apex","match":"\\\u0026|~|\\^|\\|"},{"name":"keyword.operator.assignment.apex","match":"\\="},{"name":"keyword.operator.decrement.apex","match":"--"},{"name":"keyword.operator.increment.apex","match":"\\+\\+"},{"name":"keyword.operator.arithmetic.apex","match":"%|\\*|/|-|\\+"}]},"extends-class":{"begin":"(extends)\\b\\s+([_[:alpha:]][_[:alnum:]]*)","end":"(?={|implements)","beginCaptures":{"1":{"name":"keyword.other.extends.apex"},"2":{"name":"entity.name.type.extends.apex"}}},"field-declaration":{"begin":"(?x)\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s* # first field name\n(?!=\u003e|==)(?=,|;|=|$)","end":"(?=;)","patterns":[{"name":"entity.name.variable.field.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"5":{"name":"entity.name.variable.field.apex"}}},"finally-clause":{"begin":"(?\u003c!\\.)\\b(finally)\\b","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.finally.apex"}}},"for-apex-syntax":{"match":"([_.[:alpha:]][_.[:alnum:]]+)\\s+([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\:)","captures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"2":{"name":"entity.name.variable.local.apex"},"3":{"name":"keyword.operator.iterator.colon.apex"}}},"for-statement":{"begin":"(?\u003c!\\.)\\b(for)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#for-apex-syntax"},{"include":"#local-variable-declaration"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#colon-expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.for.apex"}}},"from-clause":{"match":"(FROM)\\b\\s*([_\\.[:alnum:]]+\\b)?","captures":{"1":{"name":"keyword.operator.query.from.apex"},"2":{"name":"storage.type.apex"}}},"goto-statement":{"begin":"(?\u003c!\\.)\\b(goto)\\b","end":"(?=;)","patterns":[{"begin":"\\b(case)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.case.apex"}}},{"match":"\\b(default)\\b","captures":{"1":{"name":"keyword.control.default.apex"}}},{"name":"entity.name.label.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"}],"beginCaptures":{"1":{"name":"keyword.control.goto.apex"}}},"identifier":{"name":"variable.other.readwrite.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},"if-statement":{"begin":"(?\u003c!\\.)\\b(if)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.if.apex"}}},"implements-class":{"begin":"(implements)\\b\\s+([_[:alpha:]][_[:alnum:]]*)","end":"(?={|extends)","beginCaptures":{"1":{"name":"keyword.other.implements.apex"},"2":{"name":"entity.name.type.implements.apex"}}},"indexer-declaration":{"begin":"(?x)\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(?\u003cindexer_name\u003ethis)\\s*\n(?=\\[)","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#property-accessors"},{"include":"#expression-body"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"patterns":[{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"name":"keyword.other.this.apex"}}},"initializer-expression":{"begin":"\\{","end":"\\}","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"interface-declaration":{"begin":"(?=\\binterface\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"},{"include":"#extends-class"}],"beginCaptures":{"1":{"name":"keyword.other.interface.apex"},"2":{"name":"entity.name.type.interface.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#interface-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"interface-members":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#property-declaration"},{"include":"#indexer-declaration"},{"include":"#method-declaration"},{"include":"#punctuation-semicolon"}]},"invocation-expression":{"begin":"(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?\u003ctype_args\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"entity.name.function.apex"},"3":{"patterns":[{"include":"#type-arguments"}]}}},"javadoc-comment":{"patterns":[{"name":"comment.block.javadoc.apex","begin":"^\\s*(/\\*\\*)(?!/)","end":"\\*/","patterns":[{"name":"keyword.other.documentation.javadoc.apex","match":"@(deprecated|author|return|see|serial|since|version|usage|name|link)\\b"},{"match":"(@param)\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.javadoc.apex"},"2":{"name":"entity.name.variable.parameter.apex"}}},{"match":"(@(?:exception|throws))\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.javadoc.apex"},"2":{"name":"entity.name.type.class.apex"}}},{"match":"(`([^`]+?)`)","captures":{"1":{"name":"string.quoted.single.apex"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}}]},"literal":{"patterns":[{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#numeric-literal"},{"include":"#string-literal"}]},"local-constant-declaration":{"begin":"(?x)\n(?\u003cconst_keyword\u003e\\b(?:const)\\b)\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=)","end":"(?=;)","patterns":[{"name":"entity.name.variable.local.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"name":"storage.modifier.apex"},"2":{"patterns":[{"include":"#type"}]},"6":{"name":"entity.name.variable.local.apex"}}},"local-declaration":{"patterns":[{"include":"#local-constant-declaration"},{"include":"#local-variable-declaration"}]},"local-variable-declaration":{"begin":"(?x)\n(?:\n (?:(\\bref)\\s+)?(\\bvar\\b)| # ref local\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref local\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=|\\))","end":"(?=;|\\))","patterns":[{"name":"entity.name.variable.local.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"name":"storage.modifier.apex"},"2":{"name":"keyword.other.var.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"7":{"name":"entity.name.variable.local.apex"}}},"member-access-expression":{"patterns":[{"match":"(?x)\n(\\??\\.)\\s* # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c) # next character is not alpha-numeric, nor a (, [, or \u003c. Also, test for ?[","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.property.apex"}}},{"match":"(?x)\n(\\??\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?\u003ctype_params\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctype_params\u003e)+\u003e\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.apex"},"3":{"patterns":[{"include":"#type-arguments"}]}}},{"match":"(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)","captures":{"1":{"name":"variable.other.object.apex"}}}]},"merge-expression":{"begin":"(merge)\\b\\s+","end":"(?\u003c=\\;)","patterns":[{"include":"#object-creation-expression"},{"include":"#merge-type-statement"},{"include":"#expression"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"1":{"name":"support.function.apex"}}},"merge-type-statement":{"match":"([_[:alpha:]]*)\\b\\s+([_[:alpha:]]*)\\b\\s*(\\;)","captures":{"1":{"name":"variable.other.readwrite.apex"},"2":{"name":"variable.other.readwrite.apex"},"3":{"name":"punctuation.terminator.statement.apex"}}},"method-declaration":{"begin":"(?x)\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(\\g\u003cidentifier\u003e)\\s*\n(\u003c([^\u003c\u003e]+)\u003e)?\\s*\n(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#parenthesized-parameter-list"},{"include":"#expression-body"},{"include":"#block"}],"beginCaptures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"patterns":[{"include":"#support-type"},{"include":"#method-name-custom"}]},"8":{"patterns":[{"include":"#type-parameter-list"}]}}},"method-name-custom":{"name":"entity.name.function.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},"named-argument":{"begin":"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)","end":"(?=(,|\\)|\\]))","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"entity.name.variable.parameter.apex"},"2":{"name":"punctuation.separator.colon.apex"}}},"null-literal":{"name":"constant.language.null.apex","match":"(?\u003c!\\.)\\bnull\\b"},"numeric-literal":{"patterns":[{"name":"constant.numeric.datetime.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(\\-|\\+)\\d{2}\\:\\d{2})\\b"},{"name":"constant.numeric.datetime.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(Z)?)\\b"},{"name":"constant.numeric.date.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2})\\b"},{"name":"constant.numeric.hex.apex","match":"\\b0(x|X)[0-9a-fA-F_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"},{"name":"constant.numeric.binary.apex","match":"\\b0(b|B)[01_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b([0-9_]+)?\\.[0-9_]+((e|E)[0-9]+)?(F|f|D|d|M|m)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(e|E)[0-9_]+(F|f|D|d|M|m)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(F|f|D|d|M|m)\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"}]},"object-creation-expression":{"patterns":[{"include":"#object-creation-expression-with-parameters"},{"include":"#object-creation-expression-with-no-parameters"},{"include":"#punctuation-comma"}]},"object-creation-expression-with-no-parameters":{"match":"(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\{|$)","captures":{"1":{"name":"support.function.apex"},"2":{"name":"keyword.control.new.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"object-creation-expression-with-parameters":{"begin":"(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\()","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"name":"support.function.apex"},"2":{"name":"keyword.control.new.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"operator-assignment":{"name":"keyword.operator.assignment.apex","match":"(?\u003c!=|!)(=)(?!=)"},"operator-safe-navigation":{"name":"keyword.operator.safe-navigation.apex","match":"\\?\\."},"orderby-clause":{"match":"\\b(ORDER BY)\\b\\s*","patterns":[{"include":"#ordering-direction"},{"include":"#ordering-nulls"}],"captures":{"1":{"name":"keyword.operator.query.orderby.apex"}}},"ordering-direction":{"match":"\\b(?:(ASC)|(DESC))\\b","captures":{"1":{"name":"keyword.operator.query.ascending.apex"},"2":{"name":"keyword.operator.query.descending.apex"}}},"ordering-nulls":{"match":"\\b(?:(NULLS FIRST)|(NULLS LAST))\\b","captures":{"1":{"name":"keyword.operator.query.nullsfirst.apex"},"2":{"name":"keyword.operator.query.nullslast.apex"}}},"parameter":{"match":"(?x)\n(?:(?:\\b(this)\\b)\\s+)?\n(?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)","captures":{"1":{"name":"storage.modifier.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"name":"entity.name.variable.parameter.apex"}}},"parenthesized-expression":{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"parenthesized-parameter-list":{"begin":"(\\()","end":"(\\))","patterns":[{"include":"#comment"},{"include":"#parameter"},{"include":"#punctuation-comma"},{"include":"#variable-initializer"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"property-accessors":{"begin":"\\{","end":"\\}","patterns":[{"name":"storage.modifier.apex","match":"\\b(private|protected)\\b"},{"name":"keyword.other.get.apex","match":"\\b(get)\\b"},{"name":"keyword.other.set.apex","match":"\\b(set)\\b"},{"include":"#comment"},{"include":"#expression-body"},{"include":"#block"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"property-declaration":{"begin":"(?x)\n(?!.*\\b(?:class|interface|enum)\\b)\\s*\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(?\u003cproperty_name\u003e\\g\u003cidentifier\u003e)\\s*\n(?=\\{|=\u003e|$)","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#property-accessors"},{"include":"#expression-body"},{"include":"#variable-initializer"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"1":{"patterns":[{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"name":"entity.name.variable.property.apex"}}},"punctuation-accessor":{"name":"punctuation.accessor.apex","match":"\\."},"punctuation-comma":{"name":"punctuation.separator.comma.apex","match":","},"punctuation-semicolon":{"name":"punctuation.terminator.statement.apex","match":";"},"query-operators":{"match":"\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.apex"}}},"return-statement":{"begin":"(?\u003c!\\.)\\b(return)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.flow.return.apex"}}},"script-top-level":{"patterns":[{"include":"#method-declaration"},{"include":"#statement"},{"include":"#punctuation-semicolon"}]},"sharing-modifier":{"name":"sharing.modifier.apex","match":"(?\u003c!\\.)\\b(with sharing|without sharing|inherited sharing)\\b"},"soql-colon-method-statement":{"begin":"(:?\\.)?([_[:alpha:]][_[:alnum:]]*)(?=\\()","end":"(?\u003c=\\))","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"entity.name.function.apex"}}},"soql-colon-vars":{"begin":"(\\:)\\s*","end":"(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c)","patterns":[{"include":"#trigger-context-declaration"},{"match":"([_[:alpha:]][_[:alnum:]]*)(\\??\\.)","captures":{"1":{"name":"variable.other.object.apex"},"2":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]}}},{"include":"#soql-colon-method-statement"},{"name":"entity.name.variable.local.apex","match":"[_[:alpha:]][_[:alnum:]]*"}],"beginCaptures":{"0":{"name":"keyword.operator.conditional.colon.apex"}}},"soql-functions":{"begin":"\\b(AVG|CALENDAR_MONTH|CALENDAR_QUARTER|CALENDAR_YEAR|convertCurrency|convertTimezone|COUNT|COUNT_DISTINCT|DAY_IN_MONTH|DAY_IN_WEEK|DAY_IN_YEAR|DAY_ONLY|toLabel|INCLUDES|EXCLUDES|FISCAL_MONTH|FISCAL_QUARTER|FISCAL_YEAR|FORMAT|GROUPING|GROUP BY CUBE|GROUP BY ROLLUP|HOUR_IN_DAY|MAX|MIN|SUM|WEEK_IN_MONTH|WEEK_IN_YEAR)\\s*(\\()","end":"\\)","patterns":[{"include":"#literal"},{"include":"#punctuation-comma"},{"include":"#soql-functions"},{"name":"keyword.query.field.apex","match":"[_.[:alpha:]][_.[:alnum:]]*"}],"beginCaptures":{"1":{"name":"support.function.query.apex"},"2":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"soql-group-clauses":{"begin":"\\(","end":"\\)","patterns":[{"include":"#soql-query-expression"},{"include":"#soql-colon-vars"},{"include":"#soql-group-clauses"},{"include":"#punctuation-comma"},{"include":"#operator-assignment"},{"include":"#literal"},{"include":"#query-operators"},{"include":"#date-literals"},{"include":"#date-literal-with-params"},{"include":"#using-scope"},{"name":"keyword.query.field.apex","match":"[_.[:alpha:]][_.[:alnum:]]*"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"soql-query-body":{"patterns":[{"include":"#trigger-context-declaration"},{"include":"#soql-colon-vars"},{"include":"#soql-functions"},{"include":"#from-clause"},{"include":"#where-clause"},{"include":"#query-operators"},{"include":"#date-literals"},{"include":"#date-literal-with-params"},{"include":"#using-scope"},{"include":"#soql-group-clauses"},{"include":"#orderby-clause"},{"include":"#ordering-direction"},{"include":"#ordering-nulls"}]},"soql-query-expression":{"begin":"\\b(SELECT)\\b\\s*","end":"(?=;)|(?=\\])|(?=\\))","patterns":[{"include":"#soql-query-body"},{"include":"#punctuation-comma"},{"include":"#operator-assignment"},{"include":"#parenthesized-expression"},{"include":"#expression-operators"},{"include":"#literal"},{"match":"([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\,)?","captures":{"1":{"name":"keyword.query.field.apex"},"2":{"name":"punctuation.separator.comma.apex"}}}],"beginCaptures":{"1":{"name":"keyword.operator.query.select.apex"}}},"soqlHeaderComment":{"name":"comment.line","begin":"^\\s*//.*$","while":"^\\s*//.*$"},"statement":{"patterns":[{"include":"#comment"},{"include":"#while-statement"},{"include":"#do-statement"},{"include":"#for-statement"},{"include":"#switch-statement"},{"include":"#when-else-statement"},{"include":"#when-sobject-statement"},{"include":"#when-statement"},{"include":"#when-multiple-statement"},{"include":"#if-statement"},{"include":"#else-part"},{"include":"#goto-statement"},{"include":"#return-statement"},{"include":"#break-or-continue-statement"},{"include":"#throw-statement"},{"include":"#try-statement"},{"include":"#soql-query-expression"},{"include":"#local-declaration"},{"include":"#block"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]},"storage-modifier":{"name":"storage.modifier.apex","match":"(?\u003c!\\.)\\b(new|public|protected|private|abstract|virtual|override|global|static|final|transient)\\b"},"string-character-escape":{"name":"constant.character.escape.apex","match":"\\\\."},"string-literal":{"name":"string.quoted.single.apex","begin":"'","end":"(\\')|((?:[^\\\\\\n])$)","patterns":[{"include":"#string-character-escape"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.apex"},"2":{"name":"invalid.illegal.newline.apex"}}},"support-arguments":{"begin":"\u003c","end":"\u003e","patterns":[{"include":"#comment"},{"include":"#support-type"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"support-class":{"match":"\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\b","captures":{"1":{"name":"support.class.apex"}}},"support-expression":{"begin":"(?x)\n(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\.|\\s) # supported apex namespaces","end":"(?\u003c=\\)|$)|(?=\\})|(?=;)|(?=\\)|(?=\\]))|(?=\\,)","patterns":[{"include":"#support-type"},{"match":"(?:(\\.))([[:alpha:]]*)(?=\\()","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.function.apex"}}},{"match":"(?:(\\.))([[:alpha:]]+)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.type.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#comment"},{"include":"#statement"}],"beginCaptures":{"1":{"name":"support.class.apex"}}},"support-functions":{"match":"\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\b","captures":{"1":{"name":"support.function.apex"}}},"support-name":{"patterns":[{"match":"(\\.)\\s*([[:alpha:]]*)(?=\\()","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.function.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"match":"(\\.)\\s*([_[:alpha:]]*)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.type.apex"}}}]},"support-type":{"name":"support.apex","patterns":[{"include":"#comment"},{"include":"#support-class"},{"include":"#support-functions"},{"include":"#support-name"}]},"switch-statement":{"begin":"(?x)\n(switch)\\b\\s+\n(on)\\b\\s+\n(?:([_.?\\'\\(\\)[:alnum:]]+)\\s*)?\n(\\{)","end":"(\\})","patterns":[{"include":"#when-string"},{"include":"#when-else-statement"},{"include":"#when-sobject-statement"},{"include":"#when-statement"},{"include":"#when-multiple-statement"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"1":{"name":"keyword.control.switch.apex"},"2":{"name":"keyword.control.switch.on.apex"},"3":{"patterns":[{"include":"#statement"},{"include":"#parenthesized-expression"}]},"4":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"this-expression":{"match":"\\b(?:(this))\\b","captures":{"1":{"name":"keyword.other.this.apex"}}},"throw-expression":{"match":"(?\u003c!\\.)\\b(throw)\\b","captures":{"1":{"name":"keyword.control.flow.throw.apex"}}},"throw-statement":{"begin":"(?\u003c!\\.)\\b(throw)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.flow.throw.apex"}}},"trigger-context-declaration":{"begin":"\\b(?:(Trigger))\\b(\\.)\\b","end":"(?=\\})|(?=;)|(?=\\)|(?=\\]))","patterns":[{"name":"support.type.trigger.apex","match":"\\b(isExecuting|isInsert|isUpdate|isDelete|isBefore|isAfter|isUndelete|new|newMap|old|oldMap|size)\\b"},{"match":"(?:(\\??\\.))([[:alpha:]]+)(?=\\()","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"support.function.trigger.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#trigger-type-statement"},{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#expression"}],"beginCaptures":{"1":{"name":"support.class.trigger.apex"},"2":{"name":"punctuation.accessor.apex"}}},"trigger-declaration":{"begin":"(?=\\btrigger\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n\\b(trigger)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n\\b(on)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)\\s*","end":"(?=\\{)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#trigger-type-statement"},{"include":"#trigger-operator-statement"},{"include":"#punctuation-comma"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"}],"beginCaptures":{"1":{"name":"keyword.other.trigger.apex"},"2":{"name":"entity.name.type.trigger.apex"},"3":{"name":"keyword.operator.trigger.on.apex"},"4":{"name":"storage.type.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#statement"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"trigger-operator-statement":{"name":"keyword.operator.trigger.apex","match":"\\b(insert|update|delete|merge|upsert|undelete)\\b"},"trigger-type-statement":{"match":"\\b(?:(before)|(after))\\b","captures":{"1":{"name":"keyword.control.trigger.before.apex"},"2":{"name":"keyword.control.trigger.after.apex"}}},"try-block":{"begin":"(?\u003c!\\.)\\b(try)\\b","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.apex"}}},"try-statement":{"patterns":[{"include":"#try-block"},{"include":"#catch-clause"},{"include":"#finally-clause"}]},"type":{"name":"meta.type.apex","patterns":[{"include":"#comment"},{"include":"#type-builtin"},{"include":"#type-name"},{"include":"#type-arguments"},{"include":"#type-array-suffix"},{"include":"#type-nullable-suffix"}]},"type-arguments":{"begin":"\u003c","end":"\u003e","patterns":[{"include":"#comment"},{"include":"#support-type"},{"include":"#type"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"type-array-suffix":{"begin":"\\[","end":"\\]","patterns":[{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.squarebracket.open.apex"}},"endCaptures":{"0":{"name":"punctuation.squarebracket.close.apex"}}},"type-builtin":{"match":"\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\b","captures":{"1":{"name":"keyword.type.apex"}}},"type-declarations":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#annotation-declaration"},{"include":"#storage-modifier"},{"include":"#sharing-modifier"},{"include":"#class-declaration"},{"include":"#enum-declaration"},{"include":"#interface-declaration"},{"include":"#trigger-declaration"},{"include":"#punctuation-semicolon"}]},"type-name":{"patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)","captures":{"1":{"name":"storage.type.apex"},"2":{"name":"punctuation.accessor.apex"}}},{"match":"(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"storage.type.apex"}}},{"name":"storage.type.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"}]},"type-nullable-suffix":{"match":"\\?","captures":{"0":{"name":"punctuation.separator.question-mark.apex"}}},"type-parameter-list":{"begin":"\\\u003c","end":"\\\u003e","patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\b","captures":{"1":{"name":"entity.name.type.type-parameter.apex"}}},{"include":"#comment"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"using-scope":{"match":"((USING SCOPE)\\b\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\b\\s*","captures":{"1":{"name":"keyword.operator.query.using.apex"}}},"variable-initializer":{"begin":"(?\u003c!=|!)(=)(?!=|\u003e)","end":"(?=[,\\)\\];}])","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.apex"}}},"when-else-statement":{"begin":"(when)\\b\\s+(else)\\b\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"keyword.control.switch.else.apex"}}},"when-multiple-statement":{"begin":"(when)\\b\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"}}},"when-sobject-statement":{"begin":"(when)\\b\\s+([_[:alnum:]]+)\\s+([_[:alnum:]]+)\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"storage.type.apex"},"3":{"name":"entity.name.variable.local.apex"}}},"when-statement":{"begin":"(when)\\b\\s+([\\'_\\-[:alnum:]]+)\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"patterns":[{"include":"#expression"}]}}},"when-string":{"begin":"(when)(\\b\\s*)((\\')[_.\\,\\'\\s*[:alnum:]]+)","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"punctuation.whitespace.apex"},"3":{"patterns":[{"include":"#when-string-statement"},{"include":"#punctuation-comma"}]}}},"when-string-statement":{"patterns":[{"name":"string.quoted.single.apex","begin":"\\'","end":"\\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}}]},"where-clause":{"match":"\\b(WHERE)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.where.apex"}}},"while-statement":{"begin":"(?\u003c!\\.)\\b(while)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.while.apex"}}},"xml-attribute":{"patterns":[{"match":"(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)","captures":{"1":{"name":"entity.other.attribute-name.apex"},"2":{"name":"entity.other.attribute-name.namespace.apex"},"3":{"name":"punctuation.separator.colon.apex"},"4":{"name":"entity.other.attribute-name.localname.apex"},"5":{"name":"punctuation.separator.equals.apex"}}},{"include":"#xml-string"}]},"xml-cdata":{"name":"string.unquoted.cdata.apex","begin":"\u003c!\\[CDATA\\[","end":"\\]\\]\u003e","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}},"xml-character-entity":{"patterns":[{"name":"constant.character.entity.apex","match":"(?x)\n(\u0026)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)","captures":{"1":{"name":"punctuation.definition.constant.apex"},"3":{"name":"punctuation.definition.constant.apex"}}},{"name":"invalid.illegal.bad-ampersand.apex","match":"\u0026"}]},"xml-comment":{"name":"comment.block.apex","begin":"\u003c!--","end":"--\u003e","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},"xml-doc-comment":{"patterns":[{"include":"#xml-comment"},{"include":"#xml-character-entity"},{"include":"#xml-cdata"},{"include":"#xml-tag"}]},"xml-string":{"patterns":[{"name":"string.quoted.single.apex","begin":"\\'","end":"\\'","patterns":[{"include":"#xml-character-entity"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}},{"name":"string.quoted.double.apex","begin":"\\\"","end":"\\\"","patterns":[{"include":"#xml-character-entity"}],"beginCaptures":{"0":{"name":"punctuation.definition.stringdoublequote.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.stringdoublequote.end.apex"}}}]},"xml-tag":{"name":"meta.tag.apex","begin":"(?x)\n(\u003c/?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)","end":"(/?\u003e)","patterns":[{"include":"#xml-attribute"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.apex"},"2":{"name":"entity.name.tag.apex"},"3":{"name":"entity.name.tag.namespace.apex"},"4":{"name":"punctuation.separator.colon.apex"},"5":{"name":"entity.name.tag.localname.apex"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.apex"}}}}}
1
+ {"name":"SOQL","scopeName":"source.soql","patterns":[{"include":"#soqlHeaderComment"},{"include":"#soql-query-expression"}],"repository":{"annotation-declaration":{"begin":"([@][_[:alpha:]]+)\\b","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"storage.type.annotation.apex"}}},"argument-list":{"begin":"\\(","end":"\\)","patterns":[{"include":"#named-argument"},{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"array-creation-expression":{"begin":"(?x)\n\\b(new)\\b\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\\s*\n(?=\\[)","end":"(?\u003c=\\])","patterns":[{"include":"#bracketed-argument-list"}],"beginCaptures":{"1":{"name":"keyword.control.new.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"block":{"begin":"\\{","end":"\\}","patterns":[{"include":"#statement"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"boolean-literal":{"patterns":[{"name":"constant.language.boolean.true.apex","match":"(?\u003c!\\.)\\btrue\\b"},{"name":"constant.language.boolean.false.apex","match":"(?\u003c!\\.)\\bfalse\\b"}]},"bracketed-argument-list":{"begin":"\\[","end":"\\]","patterns":[{"include":"#soql-query-expression"},{"include":"#named-argument"},{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.squarebracket.open.apex"}},"endCaptures":{"0":{"name":"punctuation.squarebracket.close.apex"}}},"break-or-continue-statement":{"match":"(?\u003c!\\.)\\b(?:(break)|(continue))\\b","captures":{"1":{"name":"keyword.control.flow.break.apex"},"2":{"name":"keyword.control.flow.continue.apex"}}},"cast-expression":{"match":"(?x)\n(\\()\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(\\))(?=\\s*@?[_[:alnum:]\\(])","captures":{"1":{"name":"punctuation.parenthesis.open.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"name":"punctuation.parenthesis.close.apex"}}},"catch-clause":{"begin":"(?\u003c!\\.)\\b(catch)\\b","end":"(?\u003c=\\})","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"match":"(?x)\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g\u003cidentifier\u003e)\\b)?","captures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"5":{"name":"entity.name.variable.local.apex"}}}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.catch.apex"}}},"class-declaration":{"begin":"(?=\\bclass\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"},{"include":"#extends-class"},{"include":"#implements-class"}],"beginCaptures":{"1":{"name":"keyword.other.class.apex"},"2":{"name":"entity.name.type.class.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#class-or-trigger-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"class-or-trigger-members":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#storage-modifier"},{"include":"#sharing-modifier"},{"include":"#type-declarations"},{"include":"#field-declaration"},{"include":"#property-declaration"},{"include":"#indexer-declaration"},{"include":"#variable-initializer"},{"include":"#constructor-declaration"},{"include":"#method-declaration"},{"include":"#punctuation-semicolon"}]},"colon-expression":{"name":"keyword.operator.conditional.colon.apex","match":":"},"comment":{"patterns":[{"name":"comment.block.apex","begin":"/\\*(\\*)?","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},{"begin":"(^\\s+)?(?=//)","end":"(?=$)","patterns":[{"name":"comment.block.documentation.apex","begin":"(?\u003c!/)///(?!/)","end":"(?=$)","patterns":[{"include":"#xml-doc-comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},{"name":"comment.line.double-slash.apex","begin":"(?\u003c!/)//(?:(?!/)|(?=//))","end":"(?=$)","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.apex"}}}]},"conditional-operator":{"begin":"(?\u003c!\\?)\\?(?!\\?|\\.|\\[)","end":":","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.operator.conditional.question-mark.apex"}},"endCaptures":{"0":{"name":"keyword.operator.conditional.colon.apex"}}},"constructor-declaration":{"begin":"(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\b","captures":{"1":{"name":"entity.name.function.apex"}}},{"begin":"(:)","end":"(?=\\{|=\u003e)","patterns":[{"include":"#constructor-initializer"}],"beginCaptures":{"1":{"name":"punctuation.separator.colon.apex"}}},{"include":"#parenthesized-parameter-list"},{"include":"#comment"},{"include":"#expression-body"},{"include":"#block"}]},"constructor-initializer":{"begin":"\\b(?:(this))\\b\\s*(?=\\()","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"name":"keyword.other.this.apex"}}},"date-literal-with-params":{"match":"\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\s*\\:\\d+)\\b","captures":{"1":{"name":"keyword.operator.query.date.apex"}}},"date-literals":{"match":"\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.date.apex"}}},"declarations":{"patterns":[{"include":"#type-declarations"},{"include":"#punctuation-semicolon"}]},"directives":{"patterns":[{"include":"#punctuation-semicolon"}]},"do-statement":{"begin":"(?\u003c!\\.)\\b(do)\\b","end":"(?=;|})","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.do.apex"}}},"element-access-expression":{"begin":"(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list","end":"(?\u003c=\\])(?!\\s*\\[)","patterns":[{"include":"#bracketed-argument-list"}],"beginCaptures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.property.apex"},"3":{"name":"keyword.operator.null-conditional.apex"}}},"else-part":{"begin":"(?\u003c!\\.)\\b(else)\\b","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.else.apex"}}},"enum-declaration":{"begin":"(?=\\benum\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?=enum)","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"match":"(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)","captures":{"1":{"name":"keyword.other.enum.apex"},"2":{"name":"entity.name.type.enum.apex"}}}]},{"begin":"\\{","end":"\\}","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#punctuation-comma"},{"begin":"@?[_[:alpha:]][_[:alnum:]]*","end":"(?=(,|\\}))","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"0":{"name":"entity.name.variable.enum-member.apex"}}}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"expression":{"patterns":[{"include":"#comment"},{"include":"#merge-expression"},{"include":"#support-expression"},{"include":"#throw-expression"},{"include":"#this-expression"},{"include":"#trigger-context-declaration"},{"include":"#conditional-operator"},{"include":"#expression-operators"},{"include":"#soql-query-expression"},{"include":"#object-creation-expression"},{"include":"#array-creation-expression"},{"include":"#invocation-expression"},{"include":"#member-access-expression"},{"include":"#element-access-expression"},{"include":"#cast-expression"},{"include":"#literal"},{"include":"#parenthesized-expression"},{"include":"#initializer-expression"},{"include":"#identifier"}]},"expression-body":{"begin":"=\u003e","end":"(?=[,\\);}])","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.operator.arrow.apex"}}},"expression-operators":{"patterns":[{"name":"keyword.operator.assignment.compound.apex","match":"\\*=|/=|%=|\\+=|-="},{"name":"keyword.operator.assignment.compound.bitwise.apex","match":"\\\u0026=|\\^=|\u003c\u003c=|\u003e\u003e=|\\|="},{"name":"keyword.operator.bitwise.shift.apex","match":"\u003c\u003c|\u003e\u003e"},{"name":"keyword.operator.comparison.apex","match":"==|!="},{"name":"keyword.operator.relational.apex","match":"\u003c=|\u003e=|\u003c|\u003e"},{"name":"keyword.operator.logical.apex","match":"\\!|\u0026\u0026|\\|\\|"},{"name":"keyword.operator.bitwise.apex","match":"\\\u0026|~|\\^|\\|"},{"name":"keyword.operator.assignment.apex","match":"\\="},{"name":"keyword.operator.decrement.apex","match":"--"},{"name":"keyword.operator.increment.apex","match":"\\+\\+"},{"name":"keyword.operator.arithmetic.apex","match":"%|\\*|/|-|\\+"}]},"extends-class":{"begin":"(extends)\\b\\s+([_[:alpha:]][_[:alnum:]]*)","end":"(?={|implements)","beginCaptures":{"1":{"name":"keyword.other.extends.apex"},"2":{"name":"entity.name.type.extends.apex"}}},"field-declaration":{"begin":"(?x)\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s* # first field name\n(?!=\u003e|==)(?=,|;|=|$)","end":"(?=;)","patterns":[{"name":"entity.name.variable.field.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"5":{"name":"entity.name.variable.field.apex"}}},"finally-clause":{"begin":"(?\u003c!\\.)\\b(finally)\\b","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.finally.apex"}}},"for-apex-syntax":{"match":"([_.[:alpha:]][_.[:alnum:]]+)\\s+([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\:)","captures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"2":{"name":"entity.name.variable.local.apex"},"3":{"name":"keyword.operator.iterator.colon.apex"}}},"for-statement":{"begin":"(?\u003c!\\.)\\b(for)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#for-apex-syntax"},{"include":"#local-variable-declaration"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#colon-expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.for.apex"}}},"from-clause":{"match":"(FROM)\\b\\s*([_\\.[:alnum:]]+\\b)?","captures":{"1":{"name":"keyword.operator.query.from.apex"},"2":{"name":"storage.type.apex"}}},"goto-statement":{"begin":"(?\u003c!\\.)\\b(goto)\\b","end":"(?=;)","patterns":[{"begin":"\\b(case)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.case.apex"}}},{"match":"\\b(default)\\b","captures":{"1":{"name":"keyword.control.default.apex"}}},{"name":"entity.name.label.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"}],"beginCaptures":{"1":{"name":"keyword.control.goto.apex"}}},"identifier":{"name":"variable.other.readwrite.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},"if-statement":{"begin":"(?\u003c!\\.)\\b(if)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.if.apex"}}},"implements-class":{"begin":"(implements)\\b\\s+([_[:alpha:]][_[:alnum:]]*)","end":"(?={|extends)","beginCaptures":{"1":{"name":"keyword.other.implements.apex"},"2":{"name":"entity.name.type.implements.apex"}}},"indexer-declaration":{"begin":"(?x)\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(?\u003cindexer_name\u003ethis)\\s*\n(?=\\[)","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#property-accessors"},{"include":"#expression-body"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"patterns":[{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"name":"keyword.other.this.apex"}}},"initializer-expression":{"begin":"\\{","end":"\\}","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"interface-declaration":{"begin":"(?=\\binterface\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)","end":"(?=\\{)","patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"},{"include":"#extends-class"}],"beginCaptures":{"1":{"name":"keyword.other.interface.apex"},"2":{"name":"entity.name.type.interface.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#interface-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"interface-members":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#property-declaration"},{"include":"#indexer-declaration"},{"include":"#method-declaration"},{"include":"#punctuation-semicolon"}]},"invocation-expression":{"begin":"(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?\u003ctype_args\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"entity.name.function.apex"},"3":{"patterns":[{"include":"#type-arguments"}]}}},"javadoc-comment":{"patterns":[{"name":"comment.block.javadoc.apex","begin":"^\\s*(/\\*\\*)(?!/)","end":"\\*/","patterns":[{"name":"keyword.other.documentation.javadoc.apex","match":"@(deprecated|author|return|see|serial|since|version|usage|name|link)\\b"},{"match":"(@param)\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.javadoc.apex"},"2":{"name":"entity.name.variable.parameter.apex"}}},{"match":"(@(?:exception|throws))\\s+(\\S+)","captures":{"1":{"name":"keyword.other.documentation.javadoc.apex"},"2":{"name":"entity.name.type.class.apex"}}},{"match":"(`([^`]+?)`)","captures":{"1":{"name":"string.quoted.single.apex"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}}]},"literal":{"patterns":[{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#numeric-literal"},{"include":"#string-literal"}]},"local-constant-declaration":{"begin":"(?x)\n(?\u003cconst_keyword\u003e\\b(?:const)\\b)\\s*\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=)","end":"(?=;)","patterns":[{"name":"entity.name.variable.local.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"name":"storage.modifier.apex"},"2":{"patterns":[{"include":"#type"}]},"6":{"name":"entity.name.variable.local.apex"}}},"local-declaration":{"patterns":[{"include":"#local-constant-declaration"},{"include":"#local-variable-declaration"}]},"local-variable-declaration":{"begin":"(?x)\n(?:\n (?:(\\bref)\\s+)?(\\bvar\\b)| # ref local\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref local\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g\u003cidentifier\u003e)\\s*\n(?=,|;|=|\\))","end":"(?=;|\\))","patterns":[{"name":"entity.name.variable.local.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},{"include":"#punctuation-comma"},{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"1":{"name":"storage.modifier.apex"},"2":{"name":"keyword.other.var.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"7":{"name":"entity.name.variable.local.apex"}}},"member-access-expression":{"patterns":[{"match":"(?x)\n(\\??\\.)\\s* # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c) # next character is not alpha-numeric, nor a (, [, or \u003c. Also, test for ?[","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.property.apex"}}},{"match":"(?x)\n(\\??\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?\u003ctype_params\u003e\\s*\u003c([^\u003c\u003e]|\\g\u003ctype_params\u003e)+\u003e\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"variable.other.object.apex"},"3":{"patterns":[{"include":"#type-arguments"}]}}},{"match":"(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)","captures":{"1":{"name":"variable.other.object.apex"}}}]},"merge-expression":{"begin":"(merge)\\b\\s+","end":"(?\u003c=\\;)","patterns":[{"include":"#object-creation-expression"},{"include":"#merge-type-statement"},{"include":"#expression"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"1":{"name":"support.function.apex"}}},"merge-type-statement":{"match":"([_[:alpha:]]*)\\b\\s+([_[:alpha:]]*)\\b\\s*(\\;)","captures":{"1":{"name":"variable.other.readwrite.apex"},"2":{"name":"variable.other.readwrite.apex"},"3":{"name":"punctuation.terminator.statement.apex"}}},"method-declaration":{"begin":"(?x)\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(\\g\u003cidentifier\u003e)\\s*\n(\u003c([^\u003c\u003e]+)\u003e)?\\s*\n(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#parenthesized-parameter-list"},{"include":"#expression-body"},{"include":"#block"}],"beginCaptures":{"1":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"patterns":[{"include":"#support-type"},{"include":"#method-name-custom"}]},"8":{"patterns":[{"include":"#type-parameter-list"}]}}},"method-name-custom":{"name":"entity.name.function.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"},"named-argument":{"begin":"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)","end":"(?=(,|\\)|\\]))","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"entity.name.variable.parameter.apex"},"2":{"name":"punctuation.separator.colon.apex"}}},"null-literal":{"name":"constant.language.null.apex","match":"(?\u003c!\\.)\\bnull\\b"},"numeric-literal":{"patterns":[{"name":"constant.numeric.datetime.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(\\-|\\+)\\d{2}\\:\\d{2})\\b"},{"name":"constant.numeric.datetime.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(Z)?)\\b"},{"name":"constant.numeric.date.apex","match":"\\b(\\d{4}\\-\\d{2}\\-\\d{2})\\b"},{"name":"constant.numeric.hex.apex","match":"\\b0(x|X)[0-9a-fA-F_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"},{"name":"constant.numeric.binary.apex","match":"\\b0(b|B)[01_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b([0-9_]+)?\\.[0-9_]+((e|E)[0-9]+)?(F|f|D|d|M|m)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(e|E)[0-9_]+(F|f|D|d|M|m)?\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(F|f|D|d|M|m)\\b"},{"name":"constant.numeric.decimal.apex","match":"\\b[0-9_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"}]},"object-creation-expression":{"patterns":[{"include":"#object-creation-expression-with-parameters"},{"include":"#object-creation-expression-with-no-parameters"},{"include":"#punctuation-comma"}]},"object-creation-expression-with-no-parameters":{"match":"(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\{|$)","captures":{"1":{"name":"support.function.apex"},"2":{"name":"keyword.control.new.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"object-creation-expression-with-parameters":{"begin":"(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?\u003ctype_name\u003e\n (?:\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\()","end":"(?\u003c=\\))","patterns":[{"include":"#argument-list"}],"beginCaptures":{"1":{"name":"support.function.apex"},"2":{"name":"keyword.control.new.apex"},"3":{"patterns":[{"include":"#support-type"},{"include":"#type"}]}}},"operator-assignment":{"name":"keyword.operator.assignment.apex","match":"(?\u003c!=|!)(=)(?!=)"},"operator-safe-navigation":{"name":"keyword.operator.safe-navigation.apex","match":"\\?\\."},"orderby-clause":{"match":"\\b(ORDER BY)\\b\\s*","patterns":[{"include":"#ordering-direction"},{"include":"#ordering-nulls"}],"captures":{"1":{"name":"keyword.operator.query.orderby.apex"}}},"ordering-direction":{"match":"\\b(?:(ASC)|(DESC))\\b","captures":{"1":{"name":"keyword.operator.query.ascending.apex"},"2":{"name":"keyword.operator.query.descending.apex"}}},"ordering-nulls":{"match":"\\b(?:(NULLS FIRST)|(NULLS LAST))\\b","captures":{"1":{"name":"keyword.operator.query.nullsfirst.apex"},"2":{"name":"keyword.operator.query.nullslast.apex"}}},"parameter":{"match":"(?x)\n(?:(?:\\b(this)\\b)\\s+)?\n(?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g\u003cidentifier\u003e)","captures":{"1":{"name":"storage.modifier.apex"},"2":{"patterns":[{"include":"#support-type"},{"include":"#type"}]},"6":{"name":"entity.name.variable.parameter.apex"}}},"parenthesized-expression":{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"parenthesized-parameter-list":{"begin":"(\\()","end":"(\\))","patterns":[{"include":"#comment"},{"include":"#parameter"},{"include":"#punctuation-comma"},{"include":"#variable-initializer"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"property-accessors":{"begin":"\\{","end":"\\}","patterns":[{"name":"storage.modifier.apex","match":"\\b(private|protected)\\b"},{"name":"keyword.other.get.apex","match":"\\b(get)\\b"},{"name":"keyword.other.set.apex","match":"\\b(set)\\b"},{"include":"#comment"},{"include":"#expression-body"},{"include":"#block"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"property-declaration":{"begin":"(?x)\n(?!.*\\b(?:class|interface|enum)\\b)\\s*\n(?\u003creturn_type\u003e\n (?\u003ctype_name\u003e\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?\u003cidentifier\u003e@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?\u003cname_and_type_args\u003e # identifier + type arguments (if any)\n \\g\u003cidentifier\u003e\\s*\n (?\u003ctype_args\u003e\\s*\u003c(?:[^\u003c\u003e]|\\g\u003ctype_args\u003e)+\u003e\\s*)?\n )\n (?:\\s*\\.\\s*\\g\u003cname_and_type_args\u003e)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?\u003cinterface_name\u003e\\g\u003ctype_name\u003e\\s*\\.\\s*)?\n(?\u003cproperty_name\u003e\\g\u003cidentifier\u003e)\\s*\n(?=\\{|=\u003e|$)","end":"(?\u003c=\\})|(?=;)","patterns":[{"include":"#comment"},{"include":"#property-accessors"},{"include":"#expression-body"},{"include":"#variable-initializer"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"1":{"patterns":[{"include":"#type"}]},"6":{"patterns":[{"include":"#type"},{"include":"#punctuation-accessor"}]},"7":{"name":"entity.name.variable.property.apex"}}},"punctuation-accessor":{"name":"punctuation.accessor.apex","match":"\\."},"punctuation-comma":{"name":"punctuation.separator.comma.apex","match":","},"punctuation-semicolon":{"name":"punctuation.terminator.statement.apex","match":";"},"query-operators":{"match":"\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.apex"}}},"return-statement":{"begin":"(?\u003c!\\.)\\b(return)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.flow.return.apex"}}},"script-top-level":{"patterns":[{"include":"#method-declaration"},{"include":"#statement"},{"include":"#punctuation-semicolon"}]},"sharing-modifier":{"name":"sharing.modifier.apex","match":"(?\u003c!\\.)\\b(with sharing|without sharing|inherited sharing)\\b"},"soql-colon-method-statement":{"begin":"(:?\\.)?([_[:alpha:]][_[:alnum:]]*)(?=\\()","end":"(?\u003c=\\))","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"entity.name.function.apex"}}},"soql-colon-vars":{"begin":"(\\:)\\s*","end":"(?![_[:alnum:]]|\\(|(\\?)?\\[|\u003c)","patterns":[{"include":"#trigger-context-declaration"},{"match":"([_[:alpha:]][_[:alnum:]]*)(\\??\\.)","captures":{"1":{"name":"variable.other.object.apex"},"2":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]}}},{"include":"#soql-colon-method-statement"},{"name":"entity.name.variable.local.apex","match":"[_[:alpha:]][_[:alnum:]]*"}],"beginCaptures":{"0":{"name":"keyword.operator.conditional.colon.apex"}}},"soql-functions":{"begin":"\\b(AVG|CALENDAR_MONTH|CALENDAR_QUARTER|CALENDAR_YEAR|convertCurrency|convertTimezone|COUNT|COUNT_DISTINCT|DAY_IN_MONTH|DAY_IN_WEEK|DAY_IN_YEAR|DAY_ONLY|toLabel|INCLUDES|EXCLUDES|FISCAL_MONTH|FISCAL_QUARTER|FISCAL_YEAR|FORMAT|GROUPING|GROUP BY CUBE|GROUP BY ROLLUP|HOUR_IN_DAY|MAX|MIN|SUM|WEEK_IN_MONTH|WEEK_IN_YEAR)\\s*(\\()","end":"\\)","patterns":[{"include":"#literal"},{"include":"#punctuation-comma"},{"include":"#soql-functions"},{"name":"keyword.query.field.apex","match":"[_.[:alpha:]][_.[:alnum:]]*"}],"beginCaptures":{"1":{"name":"support.function.query.apex"},"2":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"soql-group-clauses":{"begin":"\\(","end":"\\)","patterns":[{"include":"#soql-query-expression"},{"include":"#soql-colon-vars"},{"include":"#soql-group-clauses"},{"include":"#punctuation-comma"},{"include":"#operator-assignment"},{"include":"#literal"},{"include":"#query-operators"},{"include":"#date-literals"},{"include":"#date-literal-with-params"},{"include":"#using-scope"},{"name":"keyword.query.field.apex","match":"[_.[:alpha:]][_.[:alnum:]]*"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},"soql-query-body":{"patterns":[{"include":"#trigger-context-declaration"},{"include":"#soql-colon-vars"},{"include":"#soql-functions"},{"include":"#from-clause"},{"include":"#where-clause"},{"include":"#query-operators"},{"include":"#date-literals"},{"include":"#date-literal-with-params"},{"include":"#using-scope"},{"include":"#soql-group-clauses"},{"include":"#orderby-clause"},{"include":"#ordering-direction"},{"include":"#ordering-nulls"}]},"soql-query-expression":{"begin":"\\b(SELECT)\\b\\s*","end":"(?=;)|(?=\\])|(?=\\))","patterns":[{"include":"#soql-query-body"},{"include":"#punctuation-comma"},{"include":"#operator-assignment"},{"include":"#parenthesized-expression"},{"include":"#expression-operators"},{"include":"#literal"},{"match":"([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\,)?","captures":{"1":{"name":"keyword.query.field.apex"},"2":{"name":"punctuation.separator.comma.apex"}}}],"beginCaptures":{"1":{"name":"keyword.operator.query.select.apex"}}},"soqlHeaderComment":{"name":"comment.line","begin":"^\\s*//.*$","while":"^\\s*//.*$"},"statement":{"patterns":[{"include":"#comment"},{"include":"#while-statement"},{"include":"#do-statement"},{"include":"#for-statement"},{"include":"#switch-statement"},{"include":"#when-else-statement"},{"include":"#when-sobject-statement"},{"include":"#when-statement"},{"include":"#when-multiple-statement"},{"include":"#if-statement"},{"include":"#else-part"},{"include":"#goto-statement"},{"include":"#return-statement"},{"include":"#break-or-continue-statement"},{"include":"#throw-statement"},{"include":"#try-statement"},{"include":"#soql-query-expression"},{"include":"#local-declaration"},{"include":"#block"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]},"storage-modifier":{"name":"storage.modifier.apex","match":"(?\u003c!\\.)\\b(new|public|protected|private|abstract|virtual|override|global|static|final|transient)\\b"},"string-character-escape":{"name":"constant.character.escape.apex","match":"\\\\."},"string-literal":{"name":"string.quoted.single.apex","begin":"'","end":"(\\')|((?:[^\\\\\\n])$)","patterns":[{"include":"#string-character-escape"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.apex"},"2":{"name":"invalid.illegal.newline.apex"}}},"support-arguments":{"begin":"\u003c","end":"\u003e","patterns":[{"include":"#comment"},{"include":"#support-type"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"support-class":{"match":"\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\b","captures":{"1":{"name":"support.class.apex"}}},"support-expression":{"begin":"(?x)\n(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\.|\\s) # supported apex namespaces","end":"(?\u003c=\\)|$)|(?=\\})|(?=;)|(?=\\)|(?=\\]))|(?=\\,)","patterns":[{"include":"#support-type"},{"match":"(?:(\\.))([[:alpha:]]*)(?=\\()","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.function.apex"}}},{"match":"(?:(\\.))([[:alpha:]]+)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.type.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#comment"},{"include":"#statement"}],"beginCaptures":{"1":{"name":"support.class.apex"}}},"support-functions":{"match":"\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\b","captures":{"1":{"name":"support.function.apex"}}},"support-name":{"patterns":[{"match":"(\\.)\\s*([[:alpha:]]*)(?=\\()","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.function.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"match":"(\\.)\\s*([_[:alpha:]]*)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"support.type.apex"}}}]},"support-type":{"name":"support.apex","patterns":[{"include":"#comment"},{"include":"#support-class"},{"include":"#support-functions"},{"include":"#support-name"}]},"switch-statement":{"begin":"(?x)\n(switch)\\b\\s+\n(on)\\b\\s+\n(?:([_.?\\'\\(\\)[:alnum:]]+)\\s*)?\n(\\{)","end":"(\\})","patterns":[{"include":"#when-string"},{"include":"#when-else-statement"},{"include":"#when-sobject-statement"},{"include":"#when-statement"},{"include":"#when-multiple-statement"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"1":{"name":"keyword.control.switch.apex"},"2":{"name":"keyword.control.switch.on.apex"},"3":{"patterns":[{"include":"#statement"},{"include":"#parenthesized-expression"}]},"4":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},"this-expression":{"match":"\\b(?:(this))\\b","captures":{"1":{"name":"keyword.other.this.apex"}}},"throw-expression":{"match":"(?\u003c!\\.)\\b(throw)\\b","captures":{"1":{"name":"keyword.control.flow.throw.apex"}}},"throw-statement":{"begin":"(?\u003c!\\.)\\b(throw)\\b","end":"(?=;)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.flow.throw.apex"}}},"trigger-context-declaration":{"begin":"\\b(?:(Trigger))\\b(\\.)\\b","end":"(?=\\})|(?=;)|(?=\\)|(?=\\]))","patterns":[{"name":"support.type.trigger.apex","match":"\\b(isExecuting|isInsert|isUpdate|isDelete|isBefore|isAfter|isUndelete|new|newMap|old|oldMap|size)\\b"},{"match":"(?:(\\??\\.))([[:alpha:]]+)(?=\\()","captures":{"1":{"patterns":[{"include":"#punctuation-accessor"},{"include":"#operator-safe-navigation"}]},"2":{"name":"support.function.trigger.apex"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"#trigger-type-statement"},{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#expression"}],"beginCaptures":{"1":{"name":"support.class.trigger.apex"},"2":{"name":"punctuation.accessor.apex"}}},"trigger-declaration":{"begin":"(?=\\btrigger\\b)","end":"(?\u003c=\\})","patterns":[{"begin":"(?x)\n\\b(trigger)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n\\b(on)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)\\s*","end":"(?=\\{)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#trigger-type-statement"},{"include":"#trigger-operator-statement"},{"include":"#punctuation-comma"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#type-parameter-list"}],"beginCaptures":{"1":{"name":"keyword.other.trigger.apex"},"2":{"name":"entity.name.type.trigger.apex"},"3":{"name":"keyword.operator.trigger.on.apex"},"4":{"name":"storage.type.apex"}}},{"begin":"\\{","end":"\\}","patterns":[{"include":"#statement"},{"include":"#class-or-trigger-members"}],"beginCaptures":{"0":{"name":"punctuation.curlybrace.open.apex"}},"endCaptures":{"0":{"name":"punctuation.curlybrace.close.apex"}}},{"include":"#javadoc-comment"},{"include":"#comment"}]},"trigger-operator-statement":{"name":"keyword.operator.trigger.apex","match":"\\b(insert|update|delete|merge|upsert|undelete)\\b"},"trigger-type-statement":{"match":"\\b(?:(before)|(after))\\b","captures":{"1":{"name":"keyword.control.trigger.before.apex"},"2":{"name":"keyword.control.trigger.after.apex"}}},"try-block":{"begin":"(?\u003c!\\.)\\b(try)\\b","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"include":"#block"}],"beginCaptures":{"1":{"name":"keyword.control.try.apex"}}},"try-statement":{"patterns":[{"include":"#try-block"},{"include":"#catch-clause"},{"include":"#finally-clause"}]},"type":{"name":"meta.type.apex","patterns":[{"include":"#comment"},{"include":"#type-builtin"},{"include":"#type-name"},{"include":"#type-arguments"},{"include":"#type-array-suffix"},{"include":"#type-nullable-suffix"}]},"type-arguments":{"begin":"\u003c","end":"\u003e","patterns":[{"include":"#comment"},{"include":"#support-type"},{"include":"#type"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"type-array-suffix":{"begin":"\\[","end":"\\]","patterns":[{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.squarebracket.open.apex"}},"endCaptures":{"0":{"name":"punctuation.squarebracket.close.apex"}}},"type-builtin":{"match":"\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\b","captures":{"1":{"name":"keyword.type.apex"}}},"type-declarations":{"patterns":[{"include":"#javadoc-comment"},{"include":"#comment"},{"include":"#annotation-declaration"},{"include":"#storage-modifier"},{"include":"#sharing-modifier"},{"include":"#class-declaration"},{"include":"#enum-declaration"},{"include":"#interface-declaration"},{"include":"#trigger-declaration"},{"include":"#punctuation-semicolon"}]},"type-name":{"patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)","captures":{"1":{"name":"storage.type.apex"},"2":{"name":"punctuation.accessor.apex"}}},{"match":"(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)","captures":{"1":{"name":"punctuation.accessor.apex"},"2":{"name":"storage.type.apex"}}},{"name":"storage.type.apex","match":"@?[_[:alpha:]][_[:alnum:]]*"}]},"type-nullable-suffix":{"match":"\\?","captures":{"0":{"name":"punctuation.separator.question-mark.apex"}}},"type-parameter-list":{"begin":"\\\u003c","end":"\\\u003e","patterns":[{"match":"(@?[_[:alpha:]][_[:alnum:]]*)\\b","captures":{"1":{"name":"entity.name.type.type-parameter.apex"}}},{"include":"#comment"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.apex"}}},"using-scope":{"match":"((USING SCOPE)\\b\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\b\\s*","captures":{"1":{"name":"keyword.operator.query.using.apex"}}},"variable-initializer":{"begin":"(?\u003c!=|!)(=)(?!=|\u003e)","end":"(?=[,\\)\\];}])","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.apex"}}},"when-else-statement":{"begin":"(when)\\b\\s+(else)\\b\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"keyword.control.switch.else.apex"}}},"when-multiple-statement":{"begin":"(when)\\b\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"}}},"when-sobject-statement":{"begin":"(when)\\b\\s+([_[:alnum:]]+)\\s+([_[:alnum:]]+)\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"storage.type.apex"},"3":{"name":"entity.name.variable.local.apex"}}},"when-statement":{"begin":"(when)\\b\\s+([\\'_\\-[:alnum:]]+)\\s*","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"patterns":[{"include":"#expression"}]}}},"when-string":{"begin":"(when)(\\b\\s*)((\\')[_.\\,\\'\\s*[:alnum:]]+)","end":"(?\u003c=\\})","patterns":[{"include":"#block"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.control.switch.when.apex"},"2":{"name":"punctuation.whitespace.apex"},"3":{"patterns":[{"include":"#when-string-statement"},{"include":"#punctuation-comma"}]}}},"when-string-statement":{"patterns":[{"name":"string.quoted.single.apex","begin":"\\'","end":"\\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}}]},"where-clause":{"match":"\\b(WHERE)\\b\\s*","captures":{"1":{"name":"keyword.operator.query.where.apex"}}},"while-statement":{"begin":"(?\u003c!\\.)\\b(while)\\b\\s*(?=\\()","end":"(?\u003c=\\})|(?=;)","patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.parenthesis.open.apex"}},"endCaptures":{"0":{"name":"punctuation.parenthesis.close.apex"}}},{"include":"#statement"}],"beginCaptures":{"1":{"name":"keyword.control.loop.while.apex"}}},"xml-attribute":{"patterns":[{"match":"(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)","captures":{"1":{"name":"entity.other.attribute-name.apex"},"2":{"name":"entity.other.attribute-name.namespace.apex"},"3":{"name":"punctuation.separator.colon.apex"},"4":{"name":"entity.other.attribute-name.localname.apex"},"5":{"name":"punctuation.separator.equals.apex"}}},{"include":"#xml-string"}]},"xml-cdata":{"name":"string.unquoted.cdata.apex","begin":"\u003c!\\[CDATA\\[","end":"\\]\\]\u003e","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}},"xml-character-entity":{"patterns":[{"name":"constant.character.entity.apex","match":"(?x)\n(\u0026)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)","captures":{"1":{"name":"punctuation.definition.constant.apex"},"3":{"name":"punctuation.definition.constant.apex"}}},{"name":"invalid.illegal.bad-ampersand.apex","match":"\u0026"}]},"xml-comment":{"name":"comment.block.apex","begin":"\u003c!--","end":"--\u003e","beginCaptures":{"0":{"name":"punctuation.definition.comment.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.apex"}}},"xml-doc-comment":{"patterns":[{"include":"#xml-comment"},{"include":"#xml-character-entity"},{"include":"#xml-cdata"},{"include":"#xml-tag"}]},"xml-string":{"patterns":[{"name":"string.quoted.single.apex","begin":"\\'","end":"\\'","patterns":[{"include":"#xml-character-entity"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.apex"}}},{"name":"string.quoted.double.apex","begin":"\\\"","end":"\\\"","patterns":[{"include":"#xml-character-entity"}],"beginCaptures":{"0":{"name":"punctuation.definition.stringdoublequote.begin.apex"}},"endCaptures":{"0":{"name":"punctuation.definition.stringdoublequote.end.apex"}}}]},"xml-tag":{"name":"meta.tag.apex","begin":"(?x)\n(\u003c/?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)","end":"(/?\u003e)","patterns":[{"include":"#xml-attribute"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.apex"},"2":{"name":"entity.name.tag.apex"},"3":{"name":"entity.name.tag.namespace.apex"},"4":{"name":"punctuation.separator.colon.apex"},"5":{"name":"entity.name.tag.localname.apex"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.apex"}}}}}
@@ -1 +1 @@
1
- {"name":"Sway","scopeName":"source.sway","patterns":[{"begin":"(\u003c)(\\[)","end":"\u003e","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#gtypes"},{"include":"#lvariables"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#types"}],"beginCaptures":{"1":{"name":"punctuation.brackets.angle.sway"},"2":{"name":"punctuation.brackets.square.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.sway"}}},{"name":"meta.attribute.sway","begin":"(#)(\\!?)(\\[)","end":"\\]","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#gtypes"},{"include":"#types"}],"beginCaptures":{"1":{"name":"punctuation.definition.attribute.sway"},"2":{"name":"keyword.operator.attribute.inner.sway"},"3":{"name":"punctuation.brackets.attribute.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.attribute.sway"}}},{"match":"(dep)\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)","captures":{"1":{"name":"storage.type.sway"},"2":{"name":"entity.name.dependency.sway"}}},{"name":"meta.import.sway","begin":"\\b(extern)\\s+(crate)","end":";","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#punctuation"}],"beginCaptures":{"1":{"name":"storage.type.sway"},"2":{"name":"keyword.other.crate.sway"}},"endCaptures":{"0":{"name":"punctuation.semi.sway"}}},{"name":"meta.use.sway","begin":"\\b(use)\\s","end":";","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#types"},{"include":"#lvariables"}],"beginCaptures":{"1":{"name":"keyword.other.sway"}},"endCaptures":{"0":{"name":"punctuation.semi.sway"}}},{"include":"#block-comments"},{"include":"#comments"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#types"},{"include":"#keywords"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#variables"}],"repository":{"block-comments":{"patterns":[{"name":"comment.block.sway","match":"/\\*\\*/"},{"name":"comment.block.documentation.sway","begin":"/\\*\\*","end":"\\*/","patterns":[{"include":"#block-comments"}]},{"name":"comment.block.sway","begin":"/\\*(?!\\*)","end":"\\*/","patterns":[{"include":"#block-comments"}]}]},"comments":{"patterns":[{"name":"comment.line.documentation.sway","match":"^\\s*///.*"},{"name":"comment.line.double-slash.sway","match":"\\s*//.*"}]},"constants":{"patterns":[{"name":"constant.other.caps.sway","match":"\\b[A-Z]{2}[A-Z0-9_]*\\b"},{"match":"\\b(const)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"storage.type.sway"},"2":{"name":"constant.other.caps.sway"}}},{"name":"constant.numeric.decimal.sway","match":"\\b\\d[\\d_]*(\\.?)[\\d_]*(?:(E)([+-])([\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"punctuation.separator.dot.decimal.sway"},"2":{"name":"keyword.operator.exponent.sway"},"3":{"name":"keyword.operator.exponent.sign.sway"},"4":{"name":"constant.numeric.decimal.exponent.mantissa.sway"},"5":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.hex.sway","match":"\\b0x[\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.oct.sway","match":"\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.bin.sway","match":"\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.language.bool.sway","match":"\\b(true|false)\\b"}]},"escapes":{"name":"constant.character.escape.sway","match":"(\\\\)(?:(?:(x[0-7][0-7a-fA-F])|(u(\\{)[\\da-fA-F]{4,6}(\\}))|.))","captures":{"1":{"name":"constant.character.escape.backslash.sway"},"2":{"name":"constant.character.escape.bit.sway"},"3":{"name":"constant.character.escape.unicode.sway"},"4":{"name":"constant.character.escape.unicode.punctuation.sway"},"5":{"name":"constant.character.escape.unicode.punctuation.sway"}}},"functions":{"patterns":[{"match":"\\b(pub)(\\()","captures":{"1":{"name":"keyword.other.sway"},"2":{"name":"punctuation.brackets.round.sway"}}},{"name":"meta.asm.definition.sway","begin":"\\b(asm)((\\())","end":"\\{|;","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"meta.attribute.asm.sway"},"2":{"name":"punctuation.brackets.round.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.curly.sway"}}},{"name":"meta.function.definition.sway","begin":"\\b(fn)\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\()|(\u003c))","end":"\\{|;","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"keyword.other.fn.sway"},"2":{"name":"entity.name.function.sway"},"4":{"name":"punctuation.brackets.round.sway"},"5":{"name":"punctuation.brackets.angle.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.curly.sway"}}},{"name":"meta.function.call.sway","begin":"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\()","end":"\\)","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.function.sway"},"2":{"name":"punctuation.brackets.round.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.sway"}}},{"name":"meta.function.call.sway","begin":"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::\u003c.*\u003e\\()","end":"\\)","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.function.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.sway"}}}]},"gtypes":{"patterns":[{"name":"entity.name.type.option.sway","match":"\\b(Some|None)\\b"},{"name":"entity.name.type.result.sway","match":"\\b(Ok|Err)\\b"}]},"interpolations":{"name":"meta.interpolation.sway","match":"({)[^\"{}]*(})","captures":{"1":{"name":"punctuation.definition.interpolation.sway"},"2":{"name":"punctuation.definition.interpolation.sway"}}},"keywords":{"patterns":[{"name":"keyword.control.sway","match":"\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\b"},{"name":"keyword.other.sway storage.type.sway","match":"\\b(extern|macro|dep)\\b"},{"name":"storage.modifier.sway","match":"\\b(const)\\b"},{"name":"storage.modifier.sway","match":"\\b(let)\\b"},{"name":"keyword.declaration.type.sway storage.type.sway","match":"\\b(type)\\b"},{"name":"keyword.declaration.enum.sway storage.type.sway","match":"\\b(enum)\\b"},{"name":"keyword.declaration.trait.sway storage.type.sway","match":"\\b(trait)\\b"},{"name":"keyword.declaration.abi.sway storage.type.sway","match":"\\b(abi)\\b"},{"name":"keyword.declaration.struct.sway","match":"\\b(struct)\\b"},{"name":"storage.modifier.sway","match":"\\b(abstract|static)\\b"},{"name":"keyword.other.sway","match":"\\b(as|async|become|box|dyn|move|final|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\b"},{"name":"keyword.other.fn.sway","match":"\\bfn\\b"},{"name":"meta.attribute.asm.sway","match":"\\basm\\b"},{"name":"keyword.other.crate.sway","match":"\\bcrate\\b"},{"name":"storage.modifier.mut.sway","match":"\\bmut\\b"},{"name":"keyword.operator.logical.sway","match":"(\\^|\\||\\|\\||\u0026\u0026|\u003c\u003c|\u003e\u003e|!)(?!=)"},{"name":"keyword.operator.borrow.and.sway","match":"\u0026(?![\u0026=])"},{"name":"keyword.operator.assignment.sway","match":"(\\+=|-=|\\*=|/=|%=|\\^=|\u0026=|\\|=|\u003c\u003c=|\u003e\u003e=)"},{"name":"keyword.operator.assignment.equal.sway","match":"(?\u003c![\u003c\u003e])=(?!=|\u003e)"},{"name":"keyword.operator.comparison.sway","match":"(=(=)?(?!\u003e)|!=|\u003c=|(?\u003c!=)\u003e=)"},{"name":"keyword.operator.math.sway","match":"(([+%]|(\\*(?!\\w)))(?!=))|(-(?!\u003e))|(/(?!/))"},{"match":"(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([\u003c\u003e])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))","captures":{"1":{"name":"punctuation.brackets.round.sway"},"2":{"name":"punctuation.brackets.square.sway"},"3":{"name":"punctuation.brackets.curly.sway"},"4":{"name":"keyword.operator.comparison.sway"},"5":{"name":"punctuation.brackets.round.sway"},"6":{"name":"punctuation.brackets.square.sway"},"7":{"name":"punctuation.brackets.curly.sway"}}},{"name":"keyword.operator.namespace.sway","match":"::"},{"match":"(\\*)(?=\\w+)","captures":{"1":{"name":"keyword.operator.dereference.sway"}}},{"name":"keyword.operator.subpattern.sway","match":"@"},{"name":"keyword.operator.access.dot.sway","match":"\\.(?!\\.)"},{"name":"keyword.operator.range.sway","match":"\\.{2}(=|\\.)?"},{"name":"keyword.operator.key-value.sway","match":":(?!:)"},{"name":"keyword.operator.arrow.skinny.sway","match":"-\u003e"},{"name":"keyword.operator.arrow.fat.sway","match":"=\u003e"},{"name":"keyword.operator.macro.dollar.sway","match":"\\$"},{"name":"keyword.operator.question.sway","match":"\\?"}]},"lifetimes":{"patterns":[{"match":"(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b","captures":{"1":{"name":"punctuation.definition.lifetime.sway"},"2":{"name":"entity.name.type.lifetime.sway"}}},{"match":"(\\\u0026)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b","captures":{"1":{"name":"keyword.operator.borrow.sway"},"2":{"name":"punctuation.definition.lifetime.sway"},"3":{"name":"entity.name.type.lifetime.sway"}}}]},"lvariables":{"patterns":[{"name":"variable.language.self.sway","match":"\\b[Ss]elf\\b"},{"name":"variable.language.super.sway","match":"\\bsuper\\b"}]},"macros":{"patterns":[{"name":"meta.macro.sway","match":"(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))","captures":{"2":{"name":"entity.name.function.macro.sway"},"3":{"name":"entity.name.type.macro.sway"}}}]},"namespaces":{"patterns":[{"match":"(?\u003c![A-Za-z0-9_])([a-z0-9_]+)((?\u003c!super|self)::)","captures":{"1":{"name":"entity.name.namespace.sway"},"2":{"name":"keyword.operator.namespace.sway"}}}]},"punctuation":{"patterns":[{"name":"punctuation.comma.sway","match":","},{"name":"punctuation.brackets.curly.sway","match":"[{}]"},{"name":"punctuation.brackets.round.sway","match":"[()]"},{"name":"punctuation.semi.sway","match":";"},{"name":"punctuation.brackets.square.sway","match":"[\\[\\]]"},{"name":"punctuation.brackets.angle.sway","match":"(?\u003c!=)[\u003c\u003e]"}]},"strings":{"patterns":[{"name":"string.quoted.double.sway","begin":"(b?)(\")","end":"\"","patterns":[{"include":"#escapes"},{"include":"#interpolations"}],"beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.string.sway"}},"endCaptures":{"0":{"name":"punctuation.definition.string.sway"}}},{"name":"string.quoted.double.sway","begin":"(b?r)(#*)(\")","end":"(\")(\\2)","beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.string.raw.sway"},"3":{"name":"punctuation.definition.string.sway"}},"endCaptures":{"1":{"name":"punctuation.definition.string.sway"},"2":{"name":"punctuation.definition.string.raw.sway"}}},{"name":"string.quoted.single.char.sway","begin":"(b)?(')","end":"'","patterns":[{"include":"#escapes"}],"beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.char.sway"}},"endCaptures":{"0":{"name":"punctuation.definition.char.sway"}}}]},"types":{"patterns":[{"match":"(?\u003c![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"begin":"\\b([A-Z][A-Za-z0-9]*)(\u003c)","end":"\u003e","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.type.sway"},"2":{"name":"punctuation.brackets.angle.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.sway"}}},{"name":"entity.name.type.primitive.sway","match":"\\b(bool|char|str)\\b"},{"match":"\\b(trait)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.trait.sway storage.type.sway"},"2":{"name":"entity.name.type.trait.sway"}}},{"match":"\\b(abi)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.abi.sway storage.type.sway"},"2":{"name":"entity.name.type.abi.sway"}}},{"match":"\\b(struct)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.struct.sway"},"2":{"name":"entity.name.type.struct.sway"}}},{"match":"\\b(enum)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.declaration.enum.sway"},"2":{"name":"entity.name.type.enum.sway"}}},{"match":"\\b(type)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.declaration.type.sway storage.type.sway"},"2":{"name":"entity.name.type.declaration.sway"}}},{"name":"entity.name.type.sway","match":"\\b[A-Z][A-Za-z0-9]*\\b(?!!)"},{"begin":"\\b(library)\\s+([a-zA-Z_][a-zA-Z0-9_]*)","end":"[\\{\\(;]","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#types"},{"include":"#lvariables"}],"beginCaptures":{"1":{"name":"source.sway meta.attribute.sway"},"2":{"name":"entity.name.type.sway"}}},{"match":"(contract|script|predicate);","captures":{"1":{"name":"source.sway meta.attribute.sway"}}}]},"variables":{"patterns":[{"name":"variable.other.sway","match":"\\b(?\u003c!(?\u003c!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b"}]}}}
1
+ {"name":"Sway","scopeName":"source.sway","patterns":[{"begin":"(\u003c)(\\[)","end":"\u003e","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#gtypes"},{"include":"#lvariables"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#types"}],"beginCaptures":{"1":{"name":"punctuation.brackets.angle.sway"},"2":{"name":"punctuation.brackets.square.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.sway"}}},{"name":"meta.attribute.sway","begin":"(#)(\\!?)(\\[)","end":"\\]","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#gtypes"},{"include":"#types"}],"beginCaptures":{"1":{"name":"punctuation.definition.attribute.sway"},"2":{"name":"keyword.operator.attribute.inner.sway"},"3":{"name":"punctuation.brackets.attribute.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.attribute.sway"}}},{"match":"(dep)\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)","captures":{"1":{"name":"storage.type.sway"},"2":{"name":"entity.name.dependency.sway"}}},{"name":"meta.import.sway","begin":"\\b(extern)\\s+(crate)","end":";","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#punctuation"}],"beginCaptures":{"1":{"name":"storage.type.sway"},"2":{"name":"keyword.other.crate.sway"}},"endCaptures":{"0":{"name":"punctuation.semi.sway"}}},{"name":"meta.use.sway","begin":"\\b(use)\\s","end":";","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#types"},{"include":"#lvariables"}],"beginCaptures":{"1":{"name":"keyword.other.sway"}},"endCaptures":{"0":{"name":"punctuation.semi.sway"}}},{"include":"#block-comments"},{"include":"#comments"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#types"},{"include":"#keywords"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#variables"}],"repository":{"block-comments":{"patterns":[{"name":"comment.block.sway","match":"/\\*\\*/"},{"name":"comment.block.documentation.sway","begin":"/\\*\\*","end":"\\*/","patterns":[{"include":"#block-comments"}]},{"name":"comment.block.sway","begin":"/\\*(?!\\*)","end":"\\*/","patterns":[{"include":"#block-comments"}]}]},"comments":{"patterns":[{"name":"comment.line.documentation.sway","match":"^\\s*///.*"},{"name":"comment.line.double-slash.sway","match":"\\s*//.*"}]},"constants":{"patterns":[{"name":"constant.other.caps.sway","match":"\\b[A-Z]{2}[A-Z0-9_]*\\b"},{"match":"\\b(const)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"storage.type.sway"},"2":{"name":"constant.other.caps.sway"}}},{"name":"constant.numeric.decimal.sway","match":"\\b\\d[\\d_]*(\\.?)[\\d_]*(?:(E)([+-])([\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"punctuation.separator.dot.decimal.sway"},"2":{"name":"keyword.operator.exponent.sway"},"3":{"name":"keyword.operator.exponent.sign.sway"},"4":{"name":"constant.numeric.decimal.exponent.mantissa.sway"},"5":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.hex.sway","match":"\\b0x[\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.oct.sway","match":"\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.numeric.bin.sway","match":"\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"name":"constant.language.bool.sway","match":"\\b(true|false)\\b"}]},"escapes":{"name":"constant.character.escape.sway","match":"(\\\\)(?:(?:(x[0-7][0-7a-fA-F])|(u(\\{)[\\da-fA-F]{4,6}(\\}))|.))","captures":{"1":{"name":"constant.character.escape.backslash.sway"},"2":{"name":"constant.character.escape.bit.sway"},"3":{"name":"constant.character.escape.unicode.sway"},"4":{"name":"constant.character.escape.unicode.punctuation.sway"},"5":{"name":"constant.character.escape.unicode.punctuation.sway"}}},"functions":{"patterns":[{"match":"\\b(pub)(\\()","captures":{"1":{"name":"keyword.other.sway"},"2":{"name":"punctuation.brackets.round.sway"}}},{"name":"meta.asm.definition.sway","begin":"\\b(asm)((\\())","end":"\\{|;","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"meta.attribute.asm.sway"},"2":{"name":"punctuation.brackets.round.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.curly.sway"}}},{"name":"meta.function.definition.sway","begin":"\\b(fn)\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\()|(\u003c))","end":"\\{|;","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"keyword.other.fn.sway"},"2":{"name":"entity.name.function.sway"},"4":{"name":"punctuation.brackets.round.sway"},"5":{"name":"punctuation.brackets.angle.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.curly.sway"}}},{"name":"meta.function.call.sway","begin":"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\()","end":"\\)","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.function.sway"},"2":{"name":"punctuation.brackets.round.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.sway"}}},{"name":"meta.function.call.sway","begin":"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::\u003c.*\u003e\\()","end":"\\)","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#constants"},{"include":"#gtypes"},{"include":"#functions"},{"include":"#lifetimes"},{"include":"#macros"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#strings"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.function.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.sway"}}}]},"gtypes":{"patterns":[{"name":"entity.name.type.option.sway","match":"\\b(Some|None)\\b"},{"name":"entity.name.type.result.sway","match":"\\b(Ok|Err)\\b"}]},"interpolations":{"name":"meta.interpolation.sway","match":"({)[^\"{}]*(})","captures":{"1":{"name":"punctuation.definition.interpolation.sway"},"2":{"name":"punctuation.definition.interpolation.sway"}}},"keywords":{"patterns":[{"name":"keyword.control.sway","match":"\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\b"},{"name":"keyword.other.sway storage.type.sway","match":"\\b(extern|macro|dep)\\b"},{"name":"storage.modifier.sway","match":"\\b(const)\\b"},{"name":"storage.modifier.sway","match":"\\b(let)\\b"},{"name":"keyword.declaration.type.sway","match":"\\b(type)\\b"},{"name":"keyword.declaration.enum.sway","match":"\\b(enum)\\b"},{"name":"keyword.declaration.trait.sway","match":"\\b(trait)\\b"},{"name":"keyword.declaration.abi.sway","match":"\\b(abi)\\b"},{"name":"keyword.declaration.struct.sway","match":"\\b(struct)\\b"},{"name":"storage.modifier.sway","match":"\\b(abstract|static)\\b"},{"name":"keyword.other.sway","match":"\\b(as|async|become|box|dyn|move|final|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\b"},{"name":"keyword.other.fn.sway","match":"\\bfn\\b"},{"name":"keyword.other.asm.sway","match":"\\basm\\b"},{"name":"keyword.other.crate.sway","match":"\\bcrate\\b"},{"name":"storage.modifier.mut.sway","match":"\\bmut\\b"},{"name":"keyword.operator.logical.sway","match":"(\\^|\\||\\|\\||\u0026\u0026|\u003c\u003c|\u003e\u003e|!)(?!=)"},{"name":"keyword.operator.borrow.and.sway","match":"\u0026(?![\u0026=])"},{"name":"keyword.operator.assignment.sway","match":"(\\+=|-=|\\*=|/=|%=|\\^=|\u0026=|\\|=|\u003c\u003c=|\u003e\u003e=)"},{"name":"keyword.operator.assignment.equal.sway","match":"(?\u003c![\u003c\u003e])=(?!=|\u003e)"},{"name":"keyword.operator.comparison.sway","match":"(=(=)?(?!\u003e)|!=|\u003c=|(?\u003c!=)\u003e=)"},{"name":"keyword.operator.math.sway","match":"(([+%]|(\\*(?!\\w)))(?!=))|(-(?!\u003e))|(/(?!/))"},{"match":"(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([\u003c\u003e])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))","captures":{"1":{"name":"punctuation.brackets.round.sway"},"2":{"name":"punctuation.brackets.square.sway"},"3":{"name":"punctuation.brackets.curly.sway"},"4":{"name":"keyword.operator.comparison.sway"},"5":{"name":"punctuation.brackets.round.sway"},"6":{"name":"punctuation.brackets.square.sway"},"7":{"name":"punctuation.brackets.curly.sway"}}},{"name":"keyword.operator.namespace.sway","match":"::"},{"match":"(\\*)(?=\\w+)","captures":{"1":{"name":"keyword.operator.dereference.sway"}}},{"name":"keyword.operator.subpattern.sway","match":"@"},{"name":"keyword.operator.access.dot.sway","match":"\\.(?!\\.)"},{"name":"keyword.operator.range.sway","match":"\\.{2}(=|\\.)?"},{"name":"keyword.operator.key-value.sway","match":":(?!:)"},{"name":"keyword.operator.arrow.skinny.sway","match":"-\u003e"},{"name":"keyword.operator.arrow.fat.sway","match":"=\u003e"},{"name":"keyword.operator.macro.dollar.sway","match":"\\$"},{"name":"keyword.operator.question.sway","match":"\\?"}]},"lifetimes":{"patterns":[{"match":"(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b","captures":{"1":{"name":"punctuation.definition.lifetime.sway"},"2":{"name":"entity.name.type.lifetime.sway"}}},{"match":"(\\\u0026)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b","captures":{"1":{"name":"keyword.operator.borrow.sway"},"2":{"name":"punctuation.definition.lifetime.sway"},"3":{"name":"entity.name.type.lifetime.sway"}}}]},"lvariables":{"patterns":[{"name":"variable.language.self.sway","match":"\\b[Ss]elf\\b"},{"name":"variable.language.super.sway","match":"\\bsuper\\b"}]},"macros":{"patterns":[{"name":"meta.macro.sway","match":"(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))","captures":{"2":{"name":"entity.name.function.macro.sway"},"3":{"name":"entity.name.type.macro.sway"}}}]},"namespaces":{"patterns":[{"match":"(?\u003c![A-Za-z0-9_])([a-z0-9_]+)((?\u003c!super|self)::)","captures":{"1":{"name":"entity.name.namespace.sway"},"2":{"name":"keyword.operator.namespace.sway"}}}]},"punctuation":{"patterns":[{"name":"punctuation.comma.sway","match":","},{"name":"punctuation.brackets.curly.sway","match":"[{}]"},{"name":"punctuation.brackets.round.sway","match":"[()]"},{"name":"punctuation.semi.sway","match":";"},{"name":"punctuation.brackets.square.sway","match":"[\\[\\]]"},{"name":"punctuation.brackets.angle.sway","match":"(?\u003c!=)[\u003c\u003e]"}]},"strings":{"patterns":[{"name":"string.quoted.double.sway","begin":"(b?)(\")","end":"\"","patterns":[{"include":"#escapes"},{"include":"#interpolations"}],"beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.string.sway"}},"endCaptures":{"0":{"name":"punctuation.definition.string.sway"}}},{"name":"string.quoted.double.sway","begin":"(b?r)(#*)(\")","end":"(\")(\\2)","beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.string.raw.sway"},"3":{"name":"punctuation.definition.string.sway"}},"endCaptures":{"1":{"name":"punctuation.definition.string.sway"},"2":{"name":"punctuation.definition.string.raw.sway"}}},{"name":"string.quoted.single.char.sway","begin":"(b)?(')","end":"'","patterns":[{"include":"#escapes"}],"beginCaptures":{"1":{"name":"string.quoted.byte.raw.sway"},"2":{"name":"punctuation.definition.char.sway"}},"endCaptures":{"0":{"name":"punctuation.definition.char.sway"}}}]},"types":{"patterns":[{"match":"(?\u003c![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\b","captures":{"1":{"name":"entity.name.type.numeric.sway"}}},{"begin":"\\b([A-Z][A-Za-z0-9]*)(\u003c)","end":"\u003e","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#lvariables"},{"include":"#lifetimes"},{"include":"#punctuation"},{"include":"#types"},{"include":"#variables"}],"beginCaptures":{"1":{"name":"entity.name.type.sway"},"2":{"name":"punctuation.brackets.angle.sway"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.sway"}}},{"name":"entity.name.type.primitive.sway","match":"\\b(bool|char|str)\\b"},{"match":"\\b(trait)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.trait.sway"},"2":{"name":"entity.name.type.trait.sway"}}},{"match":"\\b(abi)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.abi.sway"},"2":{"name":"entity.name.type.abi.sway"}}},{"match":"\\b(struct)\\s+([A-Z][A-Za-z0-9]*)\\b","captures":{"1":{"name":"keyword.declaration.struct.sway"},"2":{"name":"entity.name.type.struct.sway"}}},{"match":"\\b(enum)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.declaration.enum.sway"},"2":{"name":"entity.name.type.enum.sway"}}},{"match":"\\b(type)\\s+([A-Z][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.declaration.type.sway"},"2":{"name":"entity.name.type.declaration.sway"}}},{"name":"entity.name.type.sway","match":"\\b[A-Z][A-Za-z0-9]*\\b(?!!)"},{"begin":"\\b(library)\\s+([a-zA-Z_][a-zA-Z0-9_]*)","end":"[\\{\\(;]","patterns":[{"include":"#block-comments"},{"include":"#comments"},{"include":"#keywords"},{"include":"#namespaces"},{"include":"#punctuation"},{"include":"#types"},{"include":"#lvariables"}],"beginCaptures":{"1":{"name":"source.sway meta.attribute.sway"},"2":{"name":"entity.name.type.sway"}}},{"match":"(contract|script|predicate);","captures":{"1":{"name":"source.sway meta.attribute.sway"}}}]},"variables":{"patterns":[{"name":"variable.other.sway","match":"\\b(?\u003c!(?\u003c!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b"}]}}}
@@ -1 +1 @@
1
- {"name":"Tact","scopeName":"source.tact","patterns":[{"include":"#comment"},{"include":"#annotation"},{"include":"#literal"},{"include":"#invalid"},{"include":"#constant"},{"include":"#type"},{"include":"#expression"},{"include":"#punctuation"},{"include":"#keyword"},{"include":"#function"},{"include":"#variable"}],"repository":{"annotation":{"patterns":[{"begin":"^\\s*(@name)\\s*(\\()","end":"\\)","patterns":[{"name":"entity.name.function.func.tact","match":"(.*?)"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"begin":"(?\u003c!\\.)(@interface)\\s*(\\()","end":"\\)","patterns":[{"include":"#string"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"begin":"(?\u003c!\\.)(asm)\\s*(\\()","end":"\\)","patterns":[{"include":"#variable"},{"name":"keyword.operator.mapsto.tact","match":"-\u003e"},{"name":"constant.numeric.decimal.tact","match":"\\b(0[0-9]*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b([1-9](?:_?[0-9])*)\\b"}],"beginCaptures":{"1":{"name":"keyword.other.asm.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"name":"entity.other.attribute-name.tact","match":"(?\u003c!\\.)\\b(@name|@interface)\\b"},{"name":"keyword.other.asm.tact","match":"(?\u003c!\\.)\\b(asm)\\b"}]},"as-tlb":{"patterns":[{"match":"(?\u003c!\\.)\\b(as)\\s+(coins|varu?int(?:32|16)|remaining|bytes(?:32|64)|int257|u?int(?:25[0-6]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?))\\b","captures":{"1":{"name":"keyword.other.as.tact storage.modifier.tact"},"2":{"name":"entity.name.type.tact"}}}]},"comment":{"patterns":[{"name":"comment.line.double-slash.tact","begin":"//","end":"$","patterns":[{"include":"#todo"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.line.double-slash.tact"}}},{"name":"comment.block.tact","begin":"\\s*/\\*","end":"\\*/","patterns":[{"include":"#todo"}],"beginCaptures":{"0":{"name":"comment.block.begin.tact punctuation.definition.comment.begin.tact"}},"endCaptures":{"0":{"name":"comment.block.end.tact punctuation.definition.comment.end.tact"}}}]},"constant":{"patterns":[{"name":"constant.other.builtin.tact","match":"(?\u003c=self\\.)(storageReserve)\\b"},{"name":"constant.other.builtin.tact","match":"(?\u003c!\\.)\\b(SendDefaultMode|SendRemainingValue|SendRemainingBalance|SendPayGasSeparately|SendIgnoreErrors|SendBounceIfActionFail|SendDestroyIfZero|SendOnlyEstimateFee|ReserveExact|ReserveAllExcept|ReserveAtMost|ReserveAddOriginalBalance|ReserveInvertSign|ReserveBounceIfActionFail)\\b"},{"name":"constant.other.caps.tact","match":"\\b([A-Z]{2}[A-Z0-9_]*)\\b"},{"match":"(?\u003c!\\.)\\b(const)\\s+([a-zA-Z_][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.other.tact"},"2":{"name":"constant.other.declaration.tact"}}},{"name":"constant.language.null.tact","match":"(?\u003c!\\.)\\b(null)\\b"}]},"escape-sequence":{"name":"constant.character.escape.tact","match":"(?:\\\\)(?:(\\\\)|(\")|([nrtvbf])|(x[a-fA-F0-9]{2})|(u[a-fA-F0-9]{4})|(u\\{[a-fA-F0-9]{1,6}\\}))","captures":{"1":{"name":"constant.character.escape.backslash.tact"},"2":{"name":"constant.character.escape.double-quote.tact"},"3":{"name":"constant.character.escape.special.tact"},"4":{"name":"constant.character.escape.hex.tact"},"5":{"name":"constant.character.escape.unicode.tact"},"6":{"name":"constant.character.escape.unicodepoint.tact"}}},"expression":{"patterns":[{"name":"keyword.operator.logical.tact","match":"(\\|\\||\u0026\u0026|!!?)(?!=)"},{"name":"keyword.operator.bitwise.tact","match":"(\\^|\u0026|\\||~|\u003c\u003c|\u003e\u003e)(?!=)"},{"name":"keyword.operator.assignment.tact","match":"(\\+=|-=|\\*=|/=|%=|\\^=|\u0026=|\\|=|\\|\\|=|\u0026\u0026=|\u003c\u003c=|\u003e\u003e=)"},{"name":"keyword.operator.assignment.equal.tact","match":"(?\u003c![\u003c\u003e])=(?!=)"},{"name":"keyword.operator.comparison.tact","match":"([!=]=|\u003c=?|\u003e=?)"},{"name":"keyword.operator.arithmetic.tact","match":"([+%*\\-])|(/(?!/))"},{"name":"keyword.operator.new.tact","match":"\\b(initOf)\\b"},{"name":"keyword.operator.new.tact","match":"\\b(codeOf)\\b"},{"begin":"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)","end":"\\s*(:)","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"keyword.operator.ternary.tact"}},"endCaptures":{"1":{"name":"keyword.operator.ternary.tact"}}}]},"function":{"match":"\\b((?:[a-zA-Z_][a-zA-Z0-9_]*))\\s*(\\()","captures":{"1":{"name":"entity.name.function.tact"},"2":{"name":"punctuation.brackets.round.tact"}}},"invalid":{"patterns":[{"name":"invalid.illegal.identifier.tact","match":"\\b__(?:gen|tact)[a-zA-Z0-9_]*\\b"}]},"keyword":{"patterns":[{"name":"keyword.control.import.tact","match":"(?\u003c!\\.)\\b(import)\\b"},{"name":"keyword.control.tact","match":"(?\u003c=\\.\\.)\\b(else|catch|until|in(?!\\s*\\())\\b"},{"name":"keyword.control.tact","match":"(?\u003c!\\.)\\b(if|else|try|catch|repeat|do|until|while|foreach|in(?!\\s*\\()|return)\\b"},{"name":"keyword.other.tact","match":"(?\u003c!\\.)\\b(let|const)\\b"},{"name":"keyword.other.as.tact storage.modifier.tact","match":"(?\u003c!\\.)\\b(as)\\b"},{"name":"keyword.other.struct.tact","match":"(?\u003c!\\.)\\b(struct)\\b"},{"name":"keyword.other.message.tact","match":"(?\u003c!\\.)\\b(message)\\b"},{"name":"keyword.other.trait.tact","match":"(?\u003c!\\.)\\b(trait)\\b"},{"name":"keyword.other.contract.tact","match":"(?\u003c!\\.)\\b(contract)\\b"},{"name":"keyword.other.attribute.tact storage.modifier.tact","match":"(?\u003c!\\.)\\b(abstract|virtual|override)\\b"},{"name":"keyword.other.attribute.tact","match":"(?\u003c!\\.)\\b(extends|get|inline|mutates)\\b"},{"name":"keyword.other.function.tact","match":"(?\u003c!\\.)\\b(fun|native)\\b"},{"name":"keyword.other.function.tact","match":"(?\u003c!\\.)\\b(init|receive|bounced|external)(?=\\s*\\()"},{"name":"keyword.other.reserved.tact","match":"(?\u003c!\\.)\\b(extend|public)\\b"},{"name":"keyword.other.tact","match":"(?\u003c!\\.)\\b(primitive|with)\\b"}]},"literal":{"patterns":[{"name":"constant.numeric.hex.tact","match":"\\b(0[xX][a-fA-F0-9](?:_?[a-fA-F0-9])*)\\b"},{"name":"constant.numeric.oct.tact","match":"\\b(0[oO][0-7](?:_?[0-7])*)\\b"},{"name":"constant.numeric.bin.tact","match":"\\b(0[bB][01](?:_?[01])*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b(0[0-9]*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b([1-9](?:_?[0-9])*)\\b"},{"name":"constant.language.bool.tact","match":"(?\u003c!\\.)\\b(true|false)\\b"},{"include":"#string"},{"name":"variable.language.this.tact","match":"(?\u003c!\\.)\\b(self)\\b"}]},"punctuation":{"patterns":[{"name":"punctuation.comma.tact","match":","},{"name":"punctuation.brackets.curly.tact","match":"[{}]"},{"name":"punctuation.brackets.round.tact","match":"[()]"},{"name":"punctuation.semi.tact","match":";"},{"name":"punctuation.colon.tact","match":":"},{"name":"punctuation.dot.tact","match":"\\."}]},"simple-type":{"match":"(?\u003c!\\.)\\b([A-Z][a-zA-Z0-9_]*)(\\??)","captures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"keyword.operator.optional.tact"}}},"string":{"name":"string.quoted.double.tact","begin":"\"","end":"\"","patterns":[{"include":"#escape-sequence"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tact"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.tact"}}},"todo":{"name":"keyword.comment.todo.tact","match":"\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG)\\b"},"type":{"patterns":[{"include":"#simple-type"},{"begin":"(?\u003c!\\.)\\b(bounced)\\s*(\u003c)","end":"\u003e","patterns":[{"include":"#simple-type"}],"beginCaptures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"punctuation.brackets.angle.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.tact"}}},{"begin":"(?\u003c!\\.)\\b(map)\\s*(\u003c)","end":"\u003e","patterns":[{"include":"#simple-type"},{"name":"punctuation.comma.tact","match":","},{"include":"#as-tlb"}],"beginCaptures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"punctuation.brackets.angle.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.tact"}}},{"include":"#as-tlb"}]},"variable":{"patterns":[{"name":"comment.unused-identifier.tact","match":"(?\u003c!\\.)\\b(_)\\b"},{"name":"variable.other.tact","match":"\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b"}]}}}
1
+ {"name":"Tact","scopeName":"source.tact","patterns":[{"include":"#comment"},{"include":"#annotation"},{"include":"#literal"},{"include":"#invalid"},{"include":"#constant"},{"include":"#type"},{"include":"#expression"},{"include":"#punctuation"},{"include":"#keyword"},{"include":"#function"},{"include":"#variable"}],"repository":{"annotation":{"patterns":[{"begin":"^\\s*(@name)\\s*(\\()","end":"\\)","patterns":[{"name":"entity.name.function.func.tact","match":"(.*?)"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"begin":"(?\u003c!\\.)(@interface)\\s*(\\()","end":"\\)","patterns":[{"include":"#string"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"begin":"(?\u003c!\\.)(asm)\\s*(\\()","end":"\\)","patterns":[{"include":"#variable"},{"name":"keyword.operator.mapsto.tact","match":"-\u003e"},{"name":"constant.numeric.decimal.tact","match":"\\b(0[0-9]*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b([1-9](?:_?[0-9])*)\\b"}],"beginCaptures":{"1":{"name":"keyword.other.asm.tact"},"2":{"name":"punctuation.brackets.round.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.round.tact"}}},{"name":"entity.other.attribute-name.tact","match":"(?\u003c!\\.)\\b(@name|@interface)\\b"},{"name":"keyword.other.asm.tact","match":"(?\u003c!\\.)\\b(asm)\\b"}]},"as-tlb":{"patterns":[{"match":"(?\u003c!\\.)\\b(as)\\s+(coins|varu?int(?:32|16)|remaining|bytes(?:32|64)|int257|u?int(?:25[0-6]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?))\\b","captures":{"1":{"name":"keyword.other.as.tact storage.modifier.tact"},"2":{"name":"entity.name.type.tact"}}}]},"comment":{"patterns":[{"name":"comment.line.double-slash.tact","begin":"//","end":"$","patterns":[{"include":"#todo"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.line.double-slash.tact"}}},{"name":"comment.block.tact","begin":"\\s*/\\*","end":"\\*/","patterns":[{"include":"#todo"}],"beginCaptures":{"0":{"name":"comment.block.begin.tact punctuation.definition.comment.begin.tact"}},"endCaptures":{"0":{"name":"comment.block.end.tact punctuation.definition.comment.end.tact"}}}]},"constant":{"patterns":[{"name":"constant.other.builtin.tact","match":"(?\u003c=self\\.)(storageReserve)\\b"},{"name":"constant.other.builtin.tact","match":"(?\u003c!\\.)\\b(SendDefaultMode|SendRemainingValue|SendRemainingBalance|SendPayGasSeparately|SendPayFwdFeesSeparately|SendIgnoreErrors|SendBounceIfActionFail|SendDestroyIfZero|SendOnlyEstimateFee|ReserveExact|ReserveAllExcept|ReserveAtMost|ReserveAddOriginalBalance|ReserveInvertSign|ReserveBounceIfActionFail|TactExitCodeNullReferenceException|TactExitCodeInvalidSerializationPrefix|TactExitCodeInvalidIncomingMessage|TactExitCodeConstraintsError|TactExitCodeAccessDenied|TactExitCodeContractStopped|TactExitCodeInvalidArgument|TactExitCodeContractCodeNotFound|TactExitCodeInvalidStandardAddress|TactExitCodeNotBasechainAddress)\\b"},{"name":"constant.other.caps.tact","match":"\\b([A-Z]{2}[A-Z0-9_]*)\\b"},{"match":"(?\u003c!\\.)\\b(const)\\s+([a-zA-Z_][A-Za-z0-9_]*)\\b","captures":{"1":{"name":"keyword.other.tact"},"2":{"name":"constant.other.declaration.tact"}}},{"name":"constant.language.null.tact","match":"(?\u003c!\\.)\\b(null)\\b"}]},"escape-sequence":{"name":"constant.character.escape.tact","match":"(?:\\\\)(?:(\\\\)|(\")|([nrtvbf])|(x[a-fA-F0-9]{2})|(u[a-fA-F0-9]{4})|(u\\{[a-fA-F0-9]{1,6}\\}))","captures":{"1":{"name":"constant.character.escape.backslash.tact"},"2":{"name":"constant.character.escape.double-quote.tact"},"3":{"name":"constant.character.escape.special.tact"},"4":{"name":"constant.character.escape.hex.tact"},"5":{"name":"constant.character.escape.unicode.tact"},"6":{"name":"constant.character.escape.unicodepoint.tact"}}},"expression":{"patterns":[{"name":"keyword.operator.logical.tact","match":"(\\|\\||\u0026\u0026|!!?)(?!=)"},{"name":"keyword.operator.bitwise.tact","match":"(\\^|\u0026|\\||~|\u003c\u003c|\u003e\u003e)(?!=)"},{"name":"keyword.operator.assignment.tact","match":"(\\+=|-=|\\*=|/=|%=|\\^=|\u0026=|\\|=|\\|\\|=|\u0026\u0026=|\u003c\u003c=|\u003e\u003e=)"},{"name":"keyword.operator.assignment.equal.tact","match":"(?\u003c![\u003c\u003e])=(?!=)"},{"name":"keyword.operator.comparison.tact","match":"([!=]=|\u003c=?|\u003e=?)"},{"name":"keyword.operator.arithmetic.tact","match":"([+%*\\-])|(/(?!/))"},{"name":"keyword.operator.new.tact","match":"\\b(initOf)\\b"},{"name":"keyword.operator.new.tact","match":"\\b(codeOf)\\b"},{"begin":"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)","end":"\\s*(:)","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"keyword.operator.ternary.tact"}},"endCaptures":{"1":{"name":"keyword.operator.ternary.tact"}}}]},"function":{"match":"\\b((?:[a-zA-Z_][a-zA-Z0-9_]*))\\s*(\\()","captures":{"1":{"name":"entity.name.function.tact"},"2":{"name":"punctuation.brackets.round.tact"}}},"invalid":{"patterns":[{"name":"invalid.illegal.identifier.tact","match":"\\b__(?:gen|tact)[a-zA-Z0-9_]*\\b"}]},"keyword":{"patterns":[{"name":"keyword.control.import.tact","match":"(?\u003c!\\.)\\b(import)\\b"},{"name":"keyword.control.tact","match":"(?\u003c=\\.\\.)\\b(else|catch|until|in(?!\\s*\\())\\b"},{"name":"keyword.control.tact","match":"(?\u003c!\\.)\\b(if|else|try|catch|repeat|do|until|while|foreach|in(?!\\s*\\()|return)\\b"},{"name":"keyword.other.tact","match":"(?\u003c!\\.)\\b(let|const)\\b"},{"name":"keyword.other.as.tact storage.modifier.tact","match":"(?\u003c!\\.)\\b(as)\\b"},{"name":"keyword.other.struct.tact","match":"(?\u003c!\\.)\\b(struct)\\b(?!\\s*:)"},{"name":"keyword.other.message.tact","match":"(?\u003c!\\.)\\b(message)\\b(?!\\s*(?::|\\(\\s*M|\\(\\s*\\)))"},{"name":"keyword.other.trait.tact","match":"(?\u003c!\\.)\\b(trait)\\b(?!\\s*:)"},{"name":"keyword.other.contract.tact","match":"(?\u003c!\\.)\\b(contract)\\b(?!\\s*:)"},{"name":"keyword.other.attribute.tact storage.modifier.tact","match":"(?\u003c!\\.)\\b(abstract|virtual|override)\\b"},{"name":"keyword.other.attribute.tact","match":"(?\u003c!\\.)\\b(extends|get|inline|mutates)\\b"},{"name":"keyword.other.function.tact","match":"(?\u003c!\\.)\\b(fun|native)\\b"},{"name":"keyword.other.function.tact","match":"(?\u003c!\\.)\\b(init|receive|bounced|external)(?=\\s*\\()"},{"name":"keyword.other.reserved.tact","match":"(?\u003c!\\.)\\b(extend|public)\\b"},{"name":"keyword.other.tact","match":"(?\u003c!\\.)\\b(primitive|with)\\b"}]},"literal":{"patterns":[{"name":"constant.numeric.hex.tact","match":"\\b(0[xX][a-fA-F0-9](?:_?[a-fA-F0-9])*)\\b"},{"name":"constant.numeric.oct.tact","match":"\\b(0[oO][0-7](?:_?[0-7])*)\\b"},{"name":"constant.numeric.bin.tact","match":"\\b(0[bB][01](?:_?[01])*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b(0[0-9]*)\\b"},{"name":"constant.numeric.decimal.tact","match":"\\b([1-9](?:_?[0-9])*)\\b"},{"name":"constant.language.bool.tact","match":"(?\u003c!\\.)\\b(true|false)\\b"},{"include":"#string"},{"name":"variable.language.this.tact","match":"(?\u003c!\\.)\\b(self)\\b"}]},"punctuation":{"patterns":[{"name":"punctuation.comma.tact","match":","},{"name":"punctuation.brackets.curly.tact","match":"[{}]"},{"name":"punctuation.brackets.round.tact","match":"[()]"},{"name":"punctuation.semi.tact","match":";"},{"name":"punctuation.colon.tact","match":":"},{"name":"punctuation.dot.tact","match":"\\."}]},"simple-type":{"match":"(?\u003c!\\.)\\b([A-Z][a-zA-Z0-9_]*)(\\??)","captures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"keyword.operator.optional.tact"}}},"string":{"name":"string.quoted.double.tact","begin":"\"","end":"\"","patterns":[{"include":"#escape-sequence"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tact"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.tact"}}},"todo":{"name":"keyword.comment.todo.tact","match":"\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG)\\b"},"type":{"patterns":[{"include":"#simple-type"},{"begin":"(?\u003c!\\.)\\b(bounced)\\s*(\u003c)","end":"\u003e","patterns":[{"include":"#simple-type"}],"beginCaptures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"punctuation.brackets.angle.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.tact"}}},{"begin":"(?\u003c!\\.)\\b(map|set)\\s*(\u003c)","end":"\u003e","patterns":[{"include":"#simple-type"},{"name":"punctuation.comma.tact","match":","},{"include":"#as-tlb"}],"beginCaptures":{"1":{"name":"entity.name.type.tact"},"2":{"name":"punctuation.brackets.angle.tact"}},"endCaptures":{"0":{"name":"punctuation.brackets.angle.tact"}}},{"include":"#as-tlb"}]},"variable":{"patterns":[{"name":"comment.unused-identifier.tact","match":"(?\u003c!\\.)\\b(_)\\b"},{"name":"variable.other.tact","match":"\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b"}]}}}
@@ -1 +1 @@
1
- {"name":"TalonScript","scopeName":"source.talon","patterns":[{"include":"#body-header"},{"include":"#header"},{"include":"#body-noheader"},{"include":"#comment"},{"include":"#settings"}],"repository":{"action":{"name":"variable.parameter.talon","begin":"([a-zA-Z0-9._]+)(\\()","end":"(\\))","patterns":[{"include":"#action"},{"include":"#qstring-long"},{"include":"#qstring"},{"include":"#argsep"},{"include":"#number"},{"include":"#operator"},{"include":"#varname"}],"beginCaptures":{"1":{"name":"entity.name.function.talon","patterns":[{"name":"punctuation.separator.talon","match":"\\."}]},"2":{"name":"punctuation.definition.parameters.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.talon"}}},"action-gamepad":{"name":"entity.name.function.talon","match":"(deck|gamepad|action|face|parrot)(\\()(.*)(\\))","captures":{"2":{"name":"punctuation.definition.parameters.begin.talon"},"3":{"name":"variable.parameter.talon","patterns":[{"include":"#key-mods"}]},"4":{"name":"punctuation.definition.parameters.key.talon"}}},"action-key":{"name":"entity.name.function.talon","match":"key(\\()(.*)(\\))","captures":{"1":{"name":"punctuation.definition.parameters.begin.talon"},"2":{"name":"variable.parameter.talon","patterns":[{"include":"#key-prefixes"},{"include":"#key-mods"},{"include":"#keystring"}]},"3":{"name":"punctuation.definition.parameters.key.talon"}}},"argsep":{"name":"punctuation.separator.talon","match":","},"assignment":{"begin":"(\\S*)(\\s?=\\s?)","end":"\n","patterns":[{"include":"#comment"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"variable.other.talon"},"2":{"name":"keyword.operator.talon"}}},"body-header":{"begin":"^-$","end":"(?=not)possible","patterns":[{"include":"#body-noheader"}]},"body-noheader":{"patterns":[{"include":"#comment"},{"include":"#other-rule-definition"},{"include":"#speech-rule-definition"}]},"capture":{"name":"variable.parameter.talon","match":"(\\\u003c[a-zA-Z0-9._]+\\\u003e)"},"comment":{"name":"comment.line.number-sign.talon","match":"(\\s*#.*)$"},"context":{"match":"(.*): (.*)","captures":{"1":{"name":"entity.name.tag.talon","patterns":[{"name":"keyword.operator.talon","match":"(and |or )"}]},"2":{"name":"entity.name.type.talon","patterns":[{"include":"#comment"},{"include":"#regexp"}]}}},"expression":{"patterns":[{"include":"#qstring-long"},{"include":"#action-key"},{"include":"#action"},{"include":"#operator"},{"include":"#number"},{"include":"#qstring"},{"include":"#varname"}]},"fstring":{"name":"constant.character.format.placeholder.talon","match":"{(.+?)}","captures":{"1":{"patterns":[{"include":"#action"},{"include":"#operator"},{"include":"#number"},{"include":"#varname"},{"include":"#qstring"}]}}},"header":{"begin":"(?=^app:|title:|os:|tag:|list:|language:)","end":"(?=^-$)","patterns":[{"include":"#comment"},{"include":"#context"}]},"key-mods":{"name":"keyword.operator.talon","match":"(:)(up|down|change|repeat|start|stop|\\d+)","captures":{"1":{"name":"keyword.operator.talon"},"2":{"name":"keyword.control.talon"}}},"key-prefixes":{"match":"(ctrl|shift|cmd|alt|win|super)(-)","captures":{"1":{"name":"keyword.control.talon"},"2":{"name":"keyword.operator.talon"}}},"keystring":{"name":"string.quoted.double.talon","begin":"(\"|')","end":"(\\1)|$","patterns":[{"include":"#string-body"},{"include":"#key-mods"},{"include":"#key-prefixes"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"list":{"name":"string.interpolated.talon","match":"({[a-zA-Z0-9._]+?})"},"number":{"name":"constant.numeric.talon","match":"(?\u003c=\\b)\\d+(\\.\\d+)?"},"operator":{"name":"keyword.operator.talon","match":"\\s(\\+|-|\\*|/|or)\\s"},"other-rule-definition":{"begin":"^([a-z]+\\(.*[^\\-]\\)|[a-z]+\\(.*--\\)|[a-z]+\\(-\\)|[a-z]+\\(\\)):","end":"(?=^[^\\s#])","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"entity.name.tag.talon","patterns":[{"include":"#action-key"},{"include":"#action-gamepad"},{"include":"#rule-specials"}]}}},"qstring":{"name":"string.quoted.double.talon","begin":"(\"|')","end":"(\\1)|$","patterns":[{"include":"#string-body"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"qstring-long":{"name":"string.quoted.triple.talon","begin":"(\"\"\"|''')","end":"(\\1)","patterns":[{"include":"#string-body"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"regexp":{"name":"string.regexp.talon","begin":"(/)","end":"(/)","patterns":[{"name":"support.other.match.any.regexp","match":"\\."},{"name":"support.other.match.end.regexp","match":"\\$"},{"name":"support.other.match.begin.regexp","match":"\\^"},{"name":"constant.character.escape.talon","match":"\\\\\\.|\\\\\\*|\\\\\\^|\\\\\\$|\\\\\\+|\\\\\\?"},{"name":"constant.other.set.regexp","match":"\\[(\\\\\\]|[^\\]])*\\]"},{"name":"keyword.operator.quantifier.regexp","match":"\\*|\\+|\\?"}]},"rule-specials":{"match":"(settings|tag)(\\()(\\))","captures":{"1":{"name":"entity.name.function.talon"},"2":{"name":"punctuation.definition.parameters.begin.talon"},"3":{"name":"punctuation.definition.parameters.end.talon"}}},"speech-rule-definition":{"begin":"^(.*?):","end":"(?=^[^\\s#])","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"entity.name.tag.talon","patterns":[{"name":"string.regexp.talon","match":"^\\^"},{"name":"string.regexp.talon","match":"\\$$"},{"name":"punctuation.definition.parameters.begin.talon","match":"\\("},{"name":"punctuation.definition.parameters.end.talon","match":"\\)"},{"name":"punctuation.separator.talon","match":"\\|"},{"include":"#capture"},{"include":"#list"}]}}},"statement":{"patterns":[{"include":"#comment"},{"include":"#qstring-long"},{"include":"#action-key"},{"include":"#action"},{"include":"#qstring"},{"include":"#assignment"}]},"string-body":{"patterns":[{"name":"string.quoted.double.talon","match":"{{|}}"},{"name":"constant.character.escape.python","match":"\\\\\\\\|\\\\n|\\\\t|\\\\r|\\\\\"|\\\\'"},{"include":"#fstring"}]},"varname":{"name":"variable.parameter.talon","match":"([a-zA-Z0-9._])(_(list|\\d+))?","captures":{"2":{"name":"constant.numeric.talon","patterns":[{"name":"keyword.operator.talon","match":"_"}]}}}}}
1
+ {"name":"TalonScript","scopeName":"source.talon","patterns":[{"include":"#body-header"},{"include":"#header"},{"include":"#body-noheader"},{"include":"#comment"},{"include":"#settings"}],"repository":{"action":{"name":"variable.parameter.talon","begin":"([a-zA-Z0-9._]+)(\\()","end":"(\\))","patterns":[{"include":"#action"},{"include":"#qstring-long"},{"include":"#qstring"},{"include":"#argsep"},{"include":"#number"},{"include":"#operator"},{"include":"#varname"}],"beginCaptures":{"1":{"name":"entity.name.function.talon","patterns":[{"name":"punctuation.separator.talon","match":"\\."}]},"2":{"name":"punctuation.definition.parameters.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.talon"}}},"action-gamepad":{"name":"entity.name.function.talon","match":"(deck|gamepad|action|face|parrot)(\\()(.*)(\\))","captures":{"2":{"name":"punctuation.definition.parameters.begin.talon"},"3":{"name":"variable.parameter.talon","patterns":[{"include":"#key-mods"}]},"4":{"name":"punctuation.definition.parameters.key.talon"}}},"action-key":{"name":"entity.name.function.talon","match":"key(\\()(.*)(\\))","captures":{"1":{"name":"punctuation.definition.parameters.begin.talon"},"2":{"name":"variable.parameter.talon","patterns":[{"include":"#key-prefixes"},{"include":"#key-mods"},{"include":"#keystring"}]},"3":{"name":"punctuation.definition.parameters.key.talon"}}},"argsep":{"name":"punctuation.separator.talon","match":","},"assignment":{"begin":"(\\S*)(\\s?=\\s?)","end":"\n","patterns":[{"include":"#comment"},{"include":"#comment-invalid"},{"include":"#expression"}],"beginCaptures":{"1":{"name":"variable.other.talon"},"2":{"name":"keyword.operator.talon"}}},"body-header":{"begin":"^-$","end":"(?=not)possible","patterns":[{"include":"#body-noheader"}]},"body-noheader":{"patterns":[{"include":"#comment"},{"include":"#comment-invalid"},{"include":"#other-rule-definition"},{"include":"#speech-rule-definition"}]},"capture":{"name":"variable.parameter.talon","match":"(\\\u003c[a-zA-Z0-9._]+\\\u003e)"},"comment":{"name":"comment.line.number-sign.talon","match":"^\\s*(#.*)$"},"comment-invalid":{"name":"invalid.illegal","match":"(\\s*#.*)$"},"context":{"match":"(.*): (.*)","captures":{"1":{"name":"entity.name.tag.talon","patterns":[{"name":"keyword.operator.talon","match":"(and |or )"}]},"2":{"name":"entity.name.type.talon","patterns":[{"include":"#comment"},{"include":"#comment-invalid"},{"include":"#regexp"}]}}},"expression":{"patterns":[{"include":"#qstring-long"},{"include":"#action-key"},{"include":"#action"},{"include":"#operator"},{"include":"#number"},{"include":"#qstring"},{"include":"#varname"}]},"fstring":{"name":"constant.character.format.placeholder.talon","match":"{(.+?)}","captures":{"1":{"patterns":[{"include":"#action"},{"include":"#operator"},{"include":"#number"},{"include":"#varname"},{"include":"#qstring"}]}}},"header":{"begin":"(?=^app:|title:|os:|tag:|list:|language:)","end":"(?=^-$)","patterns":[{"include":"#comment"},{"include":"#context"}]},"key-mods":{"name":"keyword.operator.talon","match":"(:)(up|down|change|repeat|start|stop|\\d+)","captures":{"1":{"name":"keyword.operator.talon"},"2":{"name":"keyword.control.talon"}}},"key-prefixes":{"match":"(ctrl|shift|cmd|alt|win|super)(-)","captures":{"1":{"name":"keyword.control.talon"},"2":{"name":"keyword.operator.talon"}}},"keystring":{"name":"string.quoted.double.talon","begin":"(\"|')","end":"(\\1)|$","patterns":[{"include":"#string-body"},{"include":"#key-mods"},{"include":"#key-prefixes"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"list":{"name":"string.interpolated.talon","match":"({[a-zA-Z0-9._]+?})"},"number":{"name":"constant.numeric.talon","match":"(?\u003c=\\b)\\d+(\\.\\d+)?"},"operator":{"name":"keyword.operator.talon","match":"\\s(\\+|-|\\*|/|or)\\s"},"other-rule-definition":{"begin":"^([a-z]+\\(.*[^\\-]\\)|[a-z]+\\(.*--\\)|[a-z]+\\(-\\)|[a-z]+\\(\\)):","end":"(?=^[^\\s#])","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"entity.name.tag.talon","patterns":[{"include":"#action-key"},{"include":"#action-gamepad"},{"include":"#rule-specials"}]}}},"qstring":{"name":"string.quoted.double.talon","begin":"(\"|')","end":"(\\1)|$","patterns":[{"include":"#string-body"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"qstring-long":{"name":"string.quoted.triple.talon","begin":"(\"\"\"|''')","end":"(\\1)","patterns":[{"include":"#string-body"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.talon"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.talon"}}},"regexp":{"name":"string.regexp.talon","begin":"(/)","end":"(/)","patterns":[{"name":"support.other.match.any.regexp","match":"\\."},{"name":"support.other.match.end.regexp","match":"\\$"},{"name":"support.other.match.begin.regexp","match":"\\^"},{"name":"constant.character.escape.talon","match":"\\\\\\.|\\\\\\*|\\\\\\^|\\\\\\$|\\\\\\+|\\\\\\?"},{"name":"constant.other.set.regexp","match":"\\[(\\\\\\]|[^\\]])*\\]"},{"name":"keyword.operator.quantifier.regexp","match":"\\*|\\+|\\?"}]},"rule-specials":{"match":"(settings|tag)(\\()(\\))","captures":{"1":{"name":"entity.name.function.talon"},"2":{"name":"punctuation.definition.parameters.begin.talon"},"3":{"name":"punctuation.definition.parameters.end.talon"}}},"speech-rule-definition":{"begin":"^(.*?):","end":"(?=^[^\\s#])","patterns":[{"include":"#statement"}],"beginCaptures":{"1":{"name":"entity.name.tag.talon","patterns":[{"name":"string.regexp.talon","match":"^\\^"},{"name":"string.regexp.talon","match":"\\$$"},{"name":"punctuation.definition.parameters.begin.talon","match":"\\("},{"name":"punctuation.definition.parameters.end.talon","match":"\\)"},{"name":"punctuation.separator.talon","match":"\\|"},{"include":"#capture"},{"include":"#list"}]}}},"statement":{"patterns":[{"include":"#comment"},{"include":"#comment-invalid"},{"include":"#qstring-long"},{"include":"#action-key"},{"include":"#action"},{"include":"#qstring"},{"include":"#assignment"}]},"string-body":{"patterns":[{"name":"string.quoted.double.talon","match":"{{|}}"},{"name":"constant.character.escape.python","match":"\\\\\\\\|\\\\n|\\\\t|\\\\r|\\\\\"|\\\\'"},{"include":"#fstring"}]},"varname":{"name":"variable.parameter.talon","match":"([a-zA-Z0-9._])(_(list|\\d+)(?=[^a-zA-Z0-9._]))?","captures":{"2":{"name":"constant.numeric.talon","patterns":[{"name":"keyword.operator.talon","match":"_"}]}}}}}