groovy.tmLanguage.json 20 KB

1
  1. {"information_for_contributors":["This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],"version":"https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1","name":"Groovy","scopeName":"source.groovy","patterns":[{"captures":{"1":{"name":"punctuation.definition.comment.groovy"}},"match":"^(#!).+$\\n","name":"comment.line.hashbang.groovy"},{"captures":{"1":{"name":"keyword.other.package.groovy"},"2":{"name":"storage.modifier.package.groovy"},"3":{"name":"punctuation.terminator.groovy"}},"match":"^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?","name":"meta.package.groovy"},{"begin":"(import static)\\b\\s*","beginCaptures":{"1":{"name":"keyword.other.import.static.groovy"}},"captures":{"1":{"name":"keyword.other.import.groovy"},"2":{"name":"storage.modifier.import.groovy"},"3":{"name":"punctuation.terminator.groovy"}},"contentName":"storage.modifier.import.groovy","end":"\\s*(?:$|(?=%>)(;))","endCaptures":{"1":{"name":"punctuation.terminator.groovy"}},"name":"meta.import.groovy","patterns":[{"match":"\\.","name":"punctuation.separator.groovy"},{"match":"\\s","name":"invalid.illegal.character_not_allowed_here.groovy"}]},{"begin":"(import)\\b\\s*","beginCaptures":{"1":{"name":"keyword.other.import.groovy"}},"captures":{"1":{"name":"keyword.other.import.groovy"},"2":{"name":"storage.modifier.import.groovy"},"3":{"name":"punctuation.terminator.groovy"}},"contentName":"storage.modifier.import.groovy","end":"\\s*(?:$|(?=%>)|(;))","endCaptures":{"1":{"name":"punctuation.terminator.groovy"}},"name":"meta.import.groovy","patterns":[{"match":"\\.","name":"punctuation.separator.groovy"},{"match":"\\s","name":"invalid.illegal.character_not_allowed_here.groovy"}]},{"captures":{"1":{"name":"keyword.other.import.groovy"},"2":{"name":"keyword.other.import.static.groovy"},"3":{"name":"storage.modifier.import.groovy"},"4":{"name":"punctuation.terminator.groovy"}},"match":"^\\s*(import)(?:\\s+(static)\\s+)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?","name":"meta.import.groovy"},{"include":"#groovy"}],"repository":{"annotations":{"patterns":[{"begin":"(?<!\\.)(@[^ (]+)(\\()","beginCaptures":{"1":{"name":"storage.type.annotation.groovy"},"2":{"name":"punctuation.definition.annotation-arguments.begin.groovy"}},"end":"(\\))","endCaptures":{"1":{"name":"punctuation.definition.annotation-arguments.end.groovy"}},"name":"meta.declaration.annotation.groovy","patterns":[{"captures":{"1":{"name":"constant.other.key.groovy"},"2":{"name":"keyword.operator.assignment.groovy"}},"match":"(\\w*)\\s*(=)"},{"include":"#values"},{"match":",","name":"punctuation.definition.seperator.groovy"}]},{"match":"(?<!\\.)@\\S+","name":"storage.type.annotation.groovy"}]},"anonymous-classes-and-new":{"begin":"\\bnew\\b","beginCaptures":{"0":{"name":"keyword.control.new.groovy"}},"end":"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=[;])|$","patterns":[{"begin":"(\\w+)\\s*(?=\\[)","beginCaptures":{"1":{"name":"storage.type.groovy"}},"end":"}|(?=\\s*(?:,|;|\\)))|$","patterns":[{"begin":"\\[","end":"\\]","patterns":[{"include":"#groovy"}]},{"begin":"{","end":"(?=})","patterns":[{"include":"#groovy"}]}]},{"begin":"(?=\\w.*\\(?)","end":"(?<=\\))|$","patterns":[{"include":"#object-types"},{"begin":"\\(","beginCaptures":{"1":{"name":"storage.type.groovy"}},"end":"\\)","patterns":[{"include":"#groovy"}]}]},{"begin":"{","end":"}","name":"meta.inner-class.groovy","patterns":[{"include":"#class-body"}]}]},"braces":{"begin":"\\{","end":"\\}","patterns":[{"include":"#groovy-code"}]},"class":{"begin":"(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)","end":"}","endCaptures":{"0":{"name":"punctuation.section.class.end.groovy"}},"name":"meta.definition.class.groovy","patterns":[{"include":"#storage-modifiers"},{"include":"#comments"},{"captures":{"1":{"name":"storage.modifier.groovy"},"2":{"name":"entity.name.type.class.groovy"}},"match":"(class|(?:@)?interface|enum)\\s+(\\w+)","name":"meta.class.identifier.groovy"},{"begin":"extends","beginCaptures":{"0":{"name":"storage.modifier.extends.groovy"}},"end":"(?={|implements)","name":"meta.definition.class.inherited.classes.groovy","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"(implements)\\s","beginCaptures":{"1":{"name":"storage.modifier.implements.groovy"}},"end":"(?=\\s*extends|\\{)","name":"meta.definition.class.implemented.interfaces.groovy","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"{","end":"(?=})","name":"meta.class.body.groovy","patterns":[{"include":"#class-body"}]}]},"class-body":{"patterns":[{"include":"#enum-values"},{"include":"#constructors"},{"include":"#groovy"}]},"closures":{"begin":"\\{(?=.*?->)","end":"\\}","patterns":[{"begin":"(?<=\\{)(?=[^\\}]*?->)","end":"->","endCaptures":{"0":{"name":"keyword.operator.groovy"}},"patterns":[{"begin":"(?!->)","end":"(?=->)","name":"meta.closure.parameters.groovy","patterns":[{"begin":"(?!,|->)","end":"(?=,|->)","name":"meta.closure.parameter.groovy","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"keyword.operator.assignment.groovy"}},"end":"(?=,|->)","name":"meta.parameter.default.groovy","patterns":[{"include":"#groovy-code"}]},{"include":"#parameters"}]}]}]},{"begin":"(?=[^}])","end":"(?=\\})","patterns":[{"include":"#groovy-code"}]}]},"comment-block":{"begin":"/\\*","captures":{"0":{"name":"punctuation.definition.comment.groovy"}},"end":"\\*/","name":"comment.block.groovy"},"comments":{"patterns":[{"captures":{"0":{"name":"punctuation.definition.comment.groovy"}},"match":"/\\*\\*/","name":"comment.block.empty.groovy"},{"include":"text.html.javadoc"},{"include":"#comment-block"},{"captures":{"1":{"name":"punctuation.definition.comment.groovy"}},"match":"(//).*$\\n?","name":"comment.line.double-slash.groovy"}]},"constants":{"patterns":[{"match":"\\b([A-Z][A-Z0-9_]+)\\b","name":"constant.other.groovy"},{"match":"\\b(true|false|null)\\b","name":"constant.language.groovy"}]},"constructors":{"applyEndPatternLast":1,"begin":"(?<=;|^)(?=\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\s+)*[A-Z]\\w*\\()","end":"}","patterns":[{"include":"#method-content"}]},"enum-values":{"patterns":[{"begin":"(?<=;|^)\\s*\\b([A-Z0-9_]+)(?=\\s*(?:,|;|}|\\(|$))","beginCaptures":{"1":{"name":"constant.enum.name.groovy"}},"end":",|;|(?=})|^(?!\\s*\\w+\\s*(?:,|$))","patterns":[{"begin":"\\(","end":"\\)","name":"meta.enum.value.groovy","patterns":[{"match":",","name":"punctuation.definition.seperator.parameter.groovy"},{"include":"#groovy-code"}]}]}]},"groovy":{"patterns":[{"include":"#comments"},{"include":"#class"},{"include":"#variables"},{"include":"#methods"},{"include":"#annotations"},{"include":"#groovy-code"}]},"groovy-code":{"patterns":[{"include":"#groovy-code-minus-map-keys"},{"include":"#map-keys"}]},"groovy-code-minus-map-keys":{"comment":"In some situations, maps can't be declared without enclosing []'s, \n\t\t\t\ttherefore we create a collection of everything but that","patterns":[{"include":"#comments"},{"include":"#annotations"},{"include":"#support-functions"},{"include":"#keyword-language"},{"include":"#values"},{"include":"#anonymous-classes-and-new"},{"include":"#keyword-operator"},{"include":"#types"},{"include":"#storage-modifiers"},{"include":"#parens"},{"include":"#closures"},{"include":"#braces"}]},"keyword":{"patterns":[{"include":"#keyword-operator"},{"include":"#keyword-language"}]},"keyword-language":{"patterns":[{"match":"\\b(try|catch|finally|throw)\\b","name":"keyword.control.exception.groovy"},{"match":"\\b((?<!\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\b","name":"keyword.control.groovy"},{"begin":"\\bcase\\b","beginCaptures":{"0":{"name":"keyword.control.groovy"}},"end":":","endCaptures":{"0":{"name":"punctuation.definition.case-terminator.groovy"}},"name":"meta.case.groovy","patterns":[{"include":"#groovy-code-minus-map-keys"}]},{"begin":"\\b(assert)\\s","beginCaptures":{"1":{"name":"keyword.control.assert.groovy"}},"end":"$|;|}","name":"meta.declaration.assertion.groovy","patterns":[{"match":":","name":"keyword.operator.assert.expression-seperator.groovy"},{"include":"#groovy-code-minus-map-keys"}]},{"match":"\\b(throws)\\b","name":"keyword.other.throws.groovy"}]},"keyword-operator":{"patterns":[{"match":"\\b(as)\\b","name":"keyword.operator.as.groovy"},{"match":"\\b(in)\\b","name":"keyword.operator.in.groovy"},{"match":"\\?\\:","name":"keyword.operator.elvis.groovy"},{"match":"\\*\\:","name":"keyword.operator.spreadmap.groovy"},{"match":"\\.\\.","name":"keyword.operator.range.groovy"},{"match":"\\->","name":"keyword.operator.arrow.groovy"},{"match":"<<","name":"keyword.operator.leftshift.groovy"},{"match":"(?<=\\S)\\.(?=\\S)","name":"keyword.operator.navigation.groovy"},{"match":"(?<=\\S)\\?\\.(?=\\S)","name":"keyword.operator.safe-navigation.groovy"},{"begin":"\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.groovy"}},"end":"(?=$|\\)|}|])","name":"meta.evaluation.ternary.groovy","patterns":[{"match":":","name":"keyword.operator.ternary.expression-seperator.groovy"},{"include":"#groovy-code-minus-map-keys"}]},{"match":"==~","name":"keyword.operator.match.groovy"},{"match":"=~","name":"keyword.operator.find.groovy"},{"match":"\\b(instanceof)\\b","name":"keyword.operator.instanceof.groovy"},{"match":"(===|==|!=|<=|>=|<=>|<>|<|>|<<)","name":"keyword.operator.comparison.groovy"},{"match":"=","name":"keyword.operator.assignment.groovy"},{"match":"(\\-\\-|\\+\\+)","name":"keyword.operator.increment-decrement.groovy"},{"match":"(\\-|\\+|\\*|\\/|%)","name":"keyword.operator.arithmetic.groovy"},{"match":"(!|&&|\\|\\|)","name":"keyword.operator.logical.groovy"}]},"language-variables":{"patterns":[{"match":"\\b(this|super)\\b","name":"variable.language.groovy"}]},"map-keys":{"patterns":[{"captures":{"1":{"name":"constant.other.key.groovy"},"2":{"name":"punctuation.definition.seperator.key-value.groovy"}},"match":"(\\w+)\\s*(:)"}]},"method-call":{"begin":"([\\w$]+)(\\()","beginCaptures":{"1":{"name":"meta.method.groovy"},"2":{"name":"punctuation.definition.method-parameters.begin.groovy"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.definition.method-parameters.end.groovy"}},"name":"meta.method-call.groovy","patterns":[{"match":",","name":"punctuation.definition.seperator.parameter.groovy"},{"include":"#groovy-code"}]},"method-content":{"patterns":[{"match":"\\s"},{"include":"#annotations"},{"begin":"(?=(?:\\w|<)[^\\(]*\\s+(?:[\\w$]|<)+\\s*\\()","end":"(?=[\\w$]+\\s*\\()","name":"meta.method.return-type.java","patterns":[{"include":"#storage-modifiers"},{"include":"#types"}]},{"begin":"([\\w$]+)\\s*\\(","beginCaptures":{"1":{"name":"entity.name.function.java"}},"end":"\\)","name":"meta.definition.method.signature.java","patterns":[{"begin":"(?=[^)])","end":"(?=\\))","name":"meta.method.parameters.groovy","patterns":[{"begin":"(?=[^,)])","end":"(?=,|\\))","name":"meta.method.parameter.groovy","patterns":[{"match":",","name":"punctuation.definition.separator.groovy"},{"begin":"=","beginCaptures":{"0":{"name":"keyword.operator.assignment.groovy"}},"end":"(?=,|\\))","name":"meta.parameter.default.groovy","patterns":[{"include":"#groovy-code"}]},{"include":"#parameters"}]}]}]},{"begin":"(?=<)","end":"(?=\\s)","name":"meta.method.paramerised-type.groovy","patterns":[{"begin":"<","end":">","name":"storage.type.parameters.groovy","patterns":[{"include":"#types"},{"match":",","name":"punctuation.definition.seperator.groovy"}]}]},{"begin":"throws","beginCaptures":{"0":{"name":"storage.modifier.groovy"}},"end":"(?={|;)|^(?=\\s*(?:[^{\\s]|$))","name":"meta.throwables.groovy","patterns":[{"include":"#object-types"}]},{"begin":"{","end":"(?=})","name":"meta.method.body.java","patterns":[{"include":"#groovy-code"}]}]},"methods":{"applyEndPatternLast":1,"begin":"(?x:(?<=;|^|{)(?=\\s*\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:\n (?:\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:@?(?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n [\\[\\]]*\n (?:<.*>)?\n ) \n \n )\n \\s+\n ([^=]+\\s+)?\\w+\\s*\\(\n\t\t\t))","end":"}|(?=[^{])","name":"meta.definition.method.groovy","patterns":[{"include":"#method-content"}]},"nest_curly":{"begin":"\\{","captures":{"0":{"name":"punctuation.section.scope.groovy"}},"end":"\\}","patterns":[{"include":"#nest_curly"}]},"numbers":{"patterns":[{"match":"((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b","name":"constant.numeric.groovy"}]},"object-types":{"patterns":[{"begin":"\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI]))<","end":">|[^\\w\\s,\\?<\\[\\]]","name":"storage.type.generic.groovy","patterns":[{"include":"#object-types"},{"begin":"<","comment":"This is just to support <>'s with no actual type prefix","end":">|[^\\w\\s,\\[\\]<]","name":"storage.type.generic.groovy"}]},{"begin":"\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)(?=\\[)","end":"(?=[^\\]\\s])","name":"storage.type.object.array.groovy","patterns":[{"begin":"\\[","end":"\\]","patterns":[{"include":"#groovy"}]}]},{"match":"\\b(?:[a-zA-Z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI])\\b","name":"storage.type.groovy"}]},"object-types-inherited":{"patterns":[{"begin":"\\b((?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)<","end":">|[^\\w\\s,\\?<\\[\\]]","name":"entity.other.inherited-class.groovy","patterns":[{"include":"#object-types-inherited"},{"begin":"<","comment":"This is just to support <>'s with no actual type prefix","end":">|[^\\w\\s,\\[\\]<]","name":"storage.type.generic.groovy"}]},{"captures":{"1":{"name":"keyword.operator.dereference.groovy"}},"match":"\\b(?:[a-zA-Z]\\w*(\\.))*[A-Z]+\\w*[a-z]+\\w*\\b","name":"entity.other.inherited-class.groovy"}]},"parameters":{"patterns":[{"include":"#annotations"},{"include":"#storage-modifiers"},{"include":"#types"},{"match":"\\w+","name":"variable.parameter.method.groovy"}]},"parens":{"begin":"\\(","end":"\\)","patterns":[{"include":"#groovy-code"}]},"primitive-arrays":{"patterns":[{"match":"\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b","name":"storage.type.primitive.array.groovy"}]},"primitive-types":{"patterns":[{"match":"\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b","name":"storage.type.primitive.groovy"}]},"regexp":{"patterns":[{"begin":"/(?=[^/]+/([^>]|$))","beginCaptures":{"0":{"name":"punctuation.definition.string.regexp.begin.groovy"}},"end":"/","endCaptures":{"0":{"name":"punctuation.definition.string.regexp.end.groovy"}},"name":"string.regexp.groovy","patterns":[{"match":"\\\\.","name":"constant.character.escape.groovy"}]},{"begin":"~\"","beginCaptures":{"0":{"name":"punctuation.definition.string.regexp.begin.groovy"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.regexp.end.groovy"}},"name":"string.regexp.compiled.groovy","patterns":[{"match":"\\\\.","name":"constant.character.escape.groovy"}]}]},"storage-modifiers":{"patterns":[{"match":"\\b(private|protected|public)\\b","name":"storage.modifier.access-control.groovy"},{"match":"\\b(static)\\b","name":"storage.modifier.static.groovy"},{"match":"\\b(final)\\b","name":"storage.modifier.final.groovy"},{"match":"\\b(native|synchronized|abstract|threadsafe|transient)\\b","name":"storage.modifier.other.groovy"}]},"string-quoted-double":{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.groovy"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.groovy"}},"name":"string.quoted.double.groovy","patterns":[{"include":"#string-quoted-double-contents"}]},"string-quoted-double-contents":{"patterns":[{"match":"\\\\.","name":"constant.character.escape.groovy"},{"applyEndPatternLast":1,"begin":"\\$\\w","end":"(?=\\W)","name":"variable.other.interpolated.groovy","patterns":[{"match":"\\w","name":"variable.other.interpolated.groovy"},{"match":"\\.","name":"keyword.other.dereference.groovy"}]},{"begin":"\\$\\{","captures":{"0":{"name":"punctuation.section.embedded.groovy"}},"end":"\\}","name":"source.groovy.embedded.source","patterns":[{"include":"#nest_curly"}]}]},"string-quoted-double-multiline":{"begin":"\"\"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.groovy"}},"end":"\"\"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.groovy"}},"name":"string.quoted.double.multiline.groovy","patterns":[{"include":"#string-quoted-double-contents"}]},"string-quoted-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.groovy"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.groovy"}},"name":"string.quoted.single.groovy","patterns":[{"include":"#string-quoted-single-contents"}]},"string-quoted-single-contents":{"patterns":[{"match":"\\\\.","name":"constant.character.escape.groovy"}]},"string-quoted-single-multiline":{"begin":"'''","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.groovy"}},"end":"'''","endCaptures":{"0":{"name":"punctuation.definition.string.end.groovy"}},"name":"string.quoted.single.multiline.groovy","patterns":[{"include":"#string-quoted-single-contents"}]},"strings":{"patterns":[{"include":"#string-quoted-double-multiline"},{"include":"#string-quoted-single-multiline"},{"include":"#string-quoted-double"},{"include":"#string-quoted-single"},{"include":"#regexp"}]},"structures":{"begin":"\\[","beginCaptures":{"0":{"name":"punctuation.definition.structure.begin.groovy"}},"end":"\\]","endCaptures":{"0":{"name":"punctuation.definition.structure.end.groovy"}},"name":"meta.structure.groovy","patterns":[{"include":"#groovy-code"},{"match":",","name":"punctuation.definition.separator.groovy"}]},"support-functions":{"patterns":[{"match":"(?x)\\b(?:sprintf|print(?:f|ln)?)\\b","name":"support.function.print.groovy"},{"match":"(?x)\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\n\t\t\t\t\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\n\t\t\t\t\tArrayEquals)))\\b","name":"support.function.testing.groovy"}]},"types":{"patterns":[{"match":"\\b(def)\\b","name":"storage.type.def.groovy"},{"include":"#primitive-types"},{"include":"#primitive-arrays"},{"include":"#object-types"}]},"values":{"patterns":[{"include":"#language-variables"},{"include":"#strings"},{"include":"#numbers"},{"include":"#constants"},{"include":"#types"},{"include":"#structures"},{"include":"#method-call"}]},"variables":{"applyEndPatternLast":1,"patterns":[{"begin":"(?x:(?=\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:(?:[a-z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n \\s+\n [\\w\\d_<>\\[\\],\\s]+\n (?:=|$)\n \n \t\t\t))","end":";|$","name":"meta.definition.variable.groovy","patterns":[{"match":"\\s"},{"captures":{"1":{"name":"constant.variable.groovy"}},"match":"([A-Z_0-9]+)\\s+(?=\\=)"},{"captures":{"1":{"name":"meta.definition.variable.name.groovy"}},"match":"(\\w[^\\s,]*)\\s+(?=\\=)"},{"begin":"=","beginCaptures":{"0":{"name":"keyword.operator.assignment.groovy"}},"end":"$","patterns":[{"include":"#groovy-code"}]},{"captures":{"1":{"name":"meta.definition.variable.name.groovy"}},"match":"(\\w[^\\s=]*)(?=\\s*($|;))"},{"include":"#groovy-code"}]}]}}}