View raw

1 { 2 "fileTypes": [ 3 "groovy", 4 "gvy" 5 ], 6 "foldingStartMarker": "(\\{\\s*$|^\\s*// \\{\\{\\{)", 7 "foldingStopMarker": "^\\s*(\\}|// \\}\\}\\}$)", 8 "keyEquivalent": "^~G", 9 "name": "Groovy", 10 "patterns": [ 11 { 12 "captures": { 13 "1": { 14 "name": "punctuation.definition.comment.groovy" 15 } 16 }, 17 "match": "^(#!).+$\\n", 18 "name": "comment.line.hashbang.groovy" 19 }, 20 { 21 "captures": { 22 "1": { 23 "name": "keyword.other.package.groovy" 24 }, 25 "2": { 26 "name": "storage.modifier.package.groovy" 27 }, 28 "3": { 29 "name": "punctuation.terminator.groovy" 30 } 31 }, 32 "match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?", 33 "name": "meta.package.groovy" 34 }, 35 { 36 "begin": "(import static)\\b\\s*", 37 "beginCaptures": { 38 "1": { 39 "name": "keyword.other.import.static.groovy" 40 } 41 }, 42 "captures": { 43 "1": { 44 "name": "keyword.other.import.groovy" 45 }, 46 "2": { 47 "name": "storage.modifier.import.groovy" 48 }, 49 "3": { 50 "name": "punctuation.terminator.groovy" 51 } 52 }, 53 "contentName": "storage.modifier.import.groovy", 54 "end": "\\s*(?:$|(?=%>)(;))", 55 "endCaptures": { 56 "1": { 57 "name": "punctuation.terminator.groovy" 58 } 59 }, 60 "name": "meta.import.groovy", 61 "patterns": [ 62 { 63 "match": "\\.", 64 "name": "punctuation.separator.groovy" 65 }, 66 { 67 "match": "\\s", 68 "name": "invalid.illegal.character_not_allowed_here.groovy" 69 } 70 ] 71 }, 72 { 73 "begin": "(import)\\b\\s*", 74 "beginCaptures": { 75 "1": { 76 "name": "keyword.other.import.groovy" 77 } 78 }, 79 "captures": { 80 "1": { 81 "name": "keyword.other.import.groovy" 82 }, 83 "2": { 84 "name": "storage.modifier.import.groovy" 85 }, 86 "3": { 87 "name": "punctuation.terminator.groovy" 88 } 89 }, 90 "contentName": "storage.modifier.import.groovy", 91 "end": "\\s*(?:$|(?=%>)|(;))", 92 "endCaptures": { 93 "1": { 94 "name": "punctuation.terminator.groovy" 95 } 96 }, 97 "name": "meta.import.groovy", 98 "patterns": [ 99 { 100 "match": "\\.", 101 "name": "punctuation.separator.groovy" 102 }, 103 { 104 "match": "\\s", 105 "name": "invalid.illegal.character_not_allowed_here.groovy" 106 } 107 ] 108 }, 109 { 110 "captures": { 111 "1": { 112 "name": "keyword.other.import.groovy" 113 }, 114 "2": { 115 "name": "keyword.other.import.static.groovy" 116 }, 117 "3": { 118 "name": "storage.modifier.import.groovy" 119 }, 120 "4": { 121 "name": "punctuation.terminator.groovy" 122 } 123 }, 124 "match": "^\\s*(import)(?:\\s+(static)\\s+)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?", 125 "name": "meta.import.groovy" 126 }, 127 { 128 "include": "#groovy" 129 } 130 ], 131 "repository": { 132 "annotations": { 133 "patterns": [ 134 { 135 "begin": "(?<!\\.)(@[^ (]+)(\\()", 136 "beginCaptures": { 137 "1": { 138 "name": "storage.type.annotation.groovy" 139 }, 140 "2": { 141 "name": "punctuation.definition.annotation-arguments.begin.groovy" 142 } 143 }, 144 "end": "(\\))", 145 "endCaptures": { 146 "1": { 147 "name": "punctuation.definition.annotation-arguments.end.groovy" 148 } 149 }, 150 "name": "meta.declaration.annotation.groovy", 151 "patterns": [ 152 { 153 "captures": { 154 "1": { 155 "name": "constant.other.key.groovy" 156 }, 157 "2": { 158 "name": "keyword.operator.assignment.groovy" 159 } 160 }, 161 "match": "(\\w*)\\s*(=)" 162 }, 163 { 164 "include": "#values" 165 }, 166 { 167 "match": ",", 168 "name": "punctuation.definition.seperator.groovy" 169 } 170 ] 171 }, 172 { 173 "match": "(?<!\\.)@\\S+", 174 "name": "storage.type.annotation.groovy" 175 } 176 ] 177 }, 178 "anonymous-classes-and-new": { 179 "begin": "\\bnew\\b", 180 "beginCaptures": { 181 "0": { 182 "name": "keyword.control.new.groovy" 183 } 184 }, 185 "end": "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=[;])|$", 186 "patterns": [ 187 { 188 "begin": "(\\w+)\\s*(?=\\[)", 189 "beginCaptures": { 190 "1": { 191 "name": "storage.type.groovy" 192 } 193 }, 194 "end": "}|(?=\\s*(?:,|;|\\)))|$", 195 "patterns": [ 196 { 197 "begin": "\\[", 198 "end": "\\]", 199 "patterns": [ 200 { 201 "include": "#groovy" 202 } 203 ] 204 }, 205 { 206 "begin": "{", 207 "end": "(?=})", 208 "patterns": [ 209 { 210 "include": "#groovy" 211 } 212 ] 213 } 214 ] 215 }, 216 { 217 "begin": "(?=\\w.*\\(?)", 218 "end": "(?<=\\))|$", 219 "patterns": [ 220 { 221 "include": "#object-types" 222 }, 223 { 224 "begin": "\\(", 225 "beginCaptures": { 226 "1": { 227 "name": "storage.type.groovy" 228 } 229 }, 230 "end": "\\)", 231 "patterns": [ 232 { 233 "include": "#groovy" 234 } 235 ] 236 } 237 ] 238 }, 239 { 240 "begin": "{", 241 "end": "}", 242 "name": "meta.inner-class.groovy", 243 "patterns": [ 244 { 245 "include": "#class-body" 246 } 247 ] 248 } 249 ] 250 }, 251 "braces": { 252 "begin": "\\{", 253 "end": "\\}", 254 "patterns": [ 255 { 256 "include": "#groovy-code" 257 } 258 ] 259 }, 260 "class": { 261 "begin": "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)", 262 "end": "}", 263 "endCaptures": { 264 "0": { 265 "name": "punctuation.section.class.end.groovy" 266 } 267 }, 268 "name": "meta.definition.class.groovy", 269 "patterns": [ 270 { 271 "include": "#storage-modifiers" 272 }, 273 { 274 "include": "#comments" 275 }, 276 { 277 "captures": { 278 "1": { 279 "name": "storage.modifier.groovy" 280 }, 281 "2": { 282 "name": "entity.name.type.class.groovy" 283 } 284 }, 285 "match": "(class|(?:@)?interface|enum)\\s+(\\w+)", 286 "name": "meta.class.identifier.groovy" 287 }, 288 { 289 "begin": "extends", 290 "beginCaptures": { 291 "0": { 292 "name": "storage.modifier.extends.groovy" 293 } 294 }, 295 "end": "(?={|implements)", 296 "name": "meta.definition.class.inherited.classes.groovy", 297 "patterns": [ 298 { 299 "include": "#object-types-inherited" 300 }, 301 { 302 "include": "#comments" 303 } 304 ] 305 }, 306 { 307 "begin": "(implements)\\s", 308 "beginCaptures": { 309 "1": { 310 "name": "storage.modifier.implements.groovy" 311 } 312 }, 313 "end": "(?=\\s*extends|\\{)", 314 "name": "meta.definition.class.implemented.interfaces.groovy", 315 "patterns": [ 316 { 317 "include": "#object-types-inherited" 318 }, 319 { 320 "include": "#comments" 321 } 322 ] 323 }, 324 { 325 "begin": "{", 326 "end": "(?=})", 327 "name": "meta.class.body.groovy", 328 "patterns": [ 329 { 330 "include": "#class-body" 331 } 332 ] 333 } 334 ] 335 }, 336 "class-body": { 337 "patterns": [ 338 { 339 "include": "#enum-values" 340 }, 341 { 342 "include": "#constructors" 343 }, 344 { 345 "include": "#groovy" 346 } 347 ] 348 }, 349 "closures": { 350 "begin": "\\{(?=.*?->)", 351 "end": "\\}", 352 "patterns": [ 353 { 354 "begin": "(?<=\\{)(?=[^\\}]*?->)", 355 "end": "->", 356 "endCaptures": { 357 "0": { 358 "name": "keyword.operator.groovy" 359 } 360 }, 361 "patterns": [ 362 { 363 "begin": "(?!->)", 364 "end": "(?=->)", 365 "name": "meta.closure.parameters.groovy", 366 "patterns": [ 367 { 368 "begin": "(?!,|->)", 369 "end": "(?=,|->)", 370 "name": "meta.closure.parameter.groovy", 371 "patterns": [ 372 { 373 "begin": "=", 374 "beginCaptures": { 375 "0": { 376 "name": "keyword.operator.assignment.groovy" 377 } 378 }, 379 "end": "(?=,|->)", 380 "name": "meta.parameter.default.groovy", 381 "patterns": [ 382 { 383 "include": "#groovy-code" 384 } 385 ] 386 }, 387 { 388 "include": "#parameters" 389 } 390 ] 391 } 392 ] 393 } 394 ] 395 }, 396 { 397 "begin": "(?=[^}])", 398 "end": "(?=\\})", 399 "patterns": [ 400 { 401 "include": "#groovy-code" 402 } 403 ] 404 } 405 ] 406 }, 407 "comment-block": { 408 "begin": "/\\*", 409 "captures": { 410 "0": { 411 "name": "punctuation.definition.comment.groovy" 412 } 413 }, 414 "end": "\\*/", 415 "name": "comment.block.groovy" 416 }, 417 "comments": { 418 "patterns": [ 419 { 420 "captures": { 421 "0": { 422 "name": "punctuation.definition.comment.groovy" 423 } 424 }, 425 "match": "/\\*\\*/", 426 "name": "comment.block.empty.groovy" 427 }, 428 { 429 "include": "text.html.javadoc" 430 }, 431 { 432 "include": "#comment-block" 433 }, 434 { 435 "captures": { 436 "1": { 437 "name": "punctuation.definition.comment.groovy" 438 } 439 }, 440 "match": "(//).*$\\n?", 441 "name": "comment.line.double-slash.groovy" 442 } 443 ] 444 }, 445 "constants": { 446 "patterns": [ 447 { 448 "match": "\\b([A-Z][A-Z0-9_]+)\\b", 449 "name": "constant.other.groovy" 450 }, 451 { 452 "match": "\\b(true|false|null)\\b", 453 "name": "constant.language.groovy" 454 } 455 ] 456 }, 457 "constructors": { 458 "applyEndPatternLast": 1, 459 "begin": "(?<=;|^)(?=\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\s+)*[A-Z]\\w*\\()", 460 "end": "}", 461 "patterns": [ 462 { 463 "include": "#method-content" 464 } 465 ] 466 }, 467 "enum-values": { 468 "patterns": [ 469 { 470 "begin": "(?<=;|^)\\s*\\b([A-Z0-9_]+)(?=\\s*(?:,|;|}|\\(|$))", 471 "beginCaptures": { 472 "1": { 473 "name": "constant.enum.name.groovy" 474 } 475 }, 476 "end": ",|;|(?=})|^(?!\\s*\\w+\\s*(?:,|$))", 477 "patterns": [ 478 { 479 "begin": "\\(", 480 "end": "\\)", 481 "name": "meta.enum.value.groovy", 482 "patterns": [ 483 { 484 "match": ",", 485 "name": "punctuation.definition.seperator.parameter.groovy" 486 }, 487 { 488 "include": "#groovy-code" 489 } 490 ] 491 } 492 ] 493 } 494 ] 495 }, 496 "groovy": { 497 "patterns": [ 498 { 499 "include": "#comments" 500 }, 501 { 502 "include": "#class" 503 }, 504 { 505 "include": "#variables" 506 }, 507 { 508 "include": "#methods" 509 }, 510 { 511 "include": "#annotations" 512 }, 513 { 514 "include": "#groovy-code" 515 } 516 ] 517 }, 518 "groovy-code": { 519 "patterns": [ 520 { 521 "include": "#groovy-code-minus-map-keys" 522 }, 523 { 524 "include": "#map-keys" 525 } 526 ] 527 }, 528 "groovy-code-minus-map-keys": { 529 "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", 530 "patterns": [ 531 { 532 "include": "#comments" 533 }, 534 { 535 "include": "#annotations" 536 }, 537 { 538 "include": "#support-functions" 539 }, 540 { 541 "include": "#keyword-language" 542 }, 543 { 544 "include": "#values" 545 }, 546 { 547 "include": "#anonymous-classes-and-new" 548 }, 549 { 550 "include": "#keyword-operator" 551 }, 552 { 553 "include": "#types" 554 }, 555 { 556 "include": "#storage-modifiers" 557 }, 558 { 559 "include": "#parens" 560 }, 561 { 562 "include": "#closures" 563 }, 564 { 565 "include": "#braces" 566 } 567 ] 568 }, 569 "keyword": { 570 "patterns": [ 571 { 572 "include": "#keyword-operator" 573 }, 574 { 575 "include": "#keyword-language" 576 } 577 ] 578 }, 579 "keyword-language": { 580 "patterns": [ 581 { 582 "match": "\\b(try|catch|finally|throw)\\b", 583 "name": "keyword.control.exception.groovy" 584 }, 585 { 586 "match": "\\b((?<!\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\b", 587 "name": "keyword.control.groovy" 588 }, 589 { 590 "begin": "\\bcase\\b", 591 "beginCaptures": { 592 "0": { 593 "name": "keyword.control.groovy" 594 } 595 }, 596 "end": ":", 597 "endCaptures": { 598 "0": { 599 "name": "punctuation.definition.case-terminator.groovy" 600 } 601 }, 602 "name": "meta.case.groovy", 603 "patterns": [ 604 { 605 "include": "#groovy-code-minus-map-keys" 606 } 607 ] 608 }, 609 { 610 "begin": "\\b(assert)\\s", 611 "beginCaptures": { 612 "1": { 613 "name": "keyword.control.assert.groovy" 614 } 615 }, 616 "end": "$|;|}", 617 "name": "meta.declaration.assertion.groovy", 618 "patterns": [ 619 { 620 "match": ":", 621 "name": "keyword.operator.assert.expression-seperator.groovy" 622 }, 623 { 624 "include": "#groovy-code-minus-map-keys" 625 } 626 ] 627 }, 628 { 629 "match": "\\b(throws)\\b", 630 "name": "keyword.other.throws.groovy" 631 } 632 ] 633 }, 634 "keyword-operator": { 635 "patterns": [ 636 { 637 "match": "\\b(as)\\b", 638 "name": "keyword.operator.as.groovy" 639 }, 640 { 641 "match": "\\b(in)\\b", 642 "name": "keyword.operator.in.groovy" 643 }, 644 { 645 "match": "\\?\\:", 646 "name": "keyword.operator.elvis.groovy" 647 }, 648 { 649 "match": "\\*\\:", 650 "name": "keyword.operator.spreadmap.groovy" 651 }, 652 { 653 "match": "\\.\\.", 654 "name": "keyword.operator.range.groovy" 655 }, 656 { 657 "match": "\\->", 658 "name": "keyword.operator.arrow.groovy" 659 }, 660 { 661 "match": "<<", 662 "name": "keyword.operator.leftshift.groovy" 663 }, 664 { 665 "match": "(?<=\\S)\\.(?=\\S)", 666 "name": "keyword.operator.navigation.groovy" 667 }, 668 { 669 "match": "(?<=\\S)\\?\\.(?=\\S)", 670 "name": "keyword.operator.safe-navigation.groovy" 671 }, 672 { 673 "begin": "\\?", 674 "beginCaptures": { 675 "0": { 676 "name": "keyword.operator.ternary.groovy" 677 } 678 }, 679 "end": "(?=$|\\)|}|])", 680 "name": "meta.evaluation.ternary.groovy", 681 "patterns": [ 682 { 683 "match": ":", 684 "name": "keyword.operator.ternary.expression-seperator.groovy" 685 }, 686 { 687 "include": "#groovy-code-minus-map-keys" 688 } 689 ] 690 }, 691 { 692 "match": "==~", 693 "name": "keyword.operator.match.groovy" 694 }, 695 { 696 "match": "=~", 697 "name": "keyword.operator.find.groovy" 698 }, 699 { 700 "match": "\\b(instanceof)\\b", 701 "name": "keyword.operator.instanceof.groovy" 702 }, 703 { 704 "match": "(===|==|!=|<=|>=|<=>|<>|<|>|<<)", 705 "name": "keyword.operator.comparison.groovy" 706 }, 707 { 708 "match": "=", 709 "name": "keyword.operator.assignment.groovy" 710 }, 711 { 712 "match": "(\\-\\-|\\+\\+)", 713 "name": "keyword.operator.increment-decrement.groovy" 714 }, 715 { 716 "match": "(\\-|\\+|\\*|\\/|%)", 717 "name": "keyword.operator.arithmetic.groovy" 718 }, 719 { 720 "match": "(!|&&|\\|\\|)", 721 "name": "keyword.operator.logical.groovy" 722 } 723 ] 724 }, 725 "language-variables": { 726 "patterns": [ 727 { 728 "match": "\\b(this|super)\\b", 729 "name": "variable.language.groovy" 730 } 731 ] 732 }, 733 "map-keys": { 734 "patterns": [ 735 { 736 "captures": { 737 "1": { 738 "name": "constant.other.key.groovy" 739 }, 740 "2": { 741 "name": "punctuation.definition.seperator.key-value.groovy" 742 } 743 }, 744 "match": "(\\w+)\\s*(:)" 745 } 746 ] 747 }, 748 "method-call": { 749 "begin": "([\\w$]+)(\\()", 750 "beginCaptures": { 751 "1": { 752 "name": "meta.method.groovy" 753 }, 754 "2": { 755 "name": "punctuation.definition.method-parameters.begin.groovy" 756 } 757 }, 758 "end": "\\)", 759 "endCaptures": { 760 "0": { 761 "name": "punctuation.definition.method-parameters.end.groovy" 762 } 763 }, 764 "name": "meta.method-call.groovy", 765 "patterns": [ 766 { 767 "match": ",", 768 "name": "punctuation.definition.seperator.parameter.groovy" 769 }, 770 { 771 "include": "#groovy-code" 772 } 773 ] 774 }, 775 "method-content": { 776 "patterns": [ 777 { 778 "match": "\\s" 779 }, 780 { 781 "include": "#annotations" 782 }, 783 { 784 "begin": "(?=(?:\\w|<)[^\\(]*\\s+(?:[\\w$]|<)+\\s*\\()", 785 "end": "(?=[\\w$]+\\s*\\()", 786 "name": "meta.method.return-type.java", 787 "patterns": [ 788 { 789 "include": "#storage-modifiers" 790 }, 791 { 792 "include": "#types" 793 } 794 ] 795 }, 796 { 797 "begin": "([\\w$]+)\\s*\\(", 798 "beginCaptures": { 799 "1": { 800 "name": "entity.name.function.java" 801 } 802 }, 803 "end": "\\)", 804 "name": "meta.definition.method.signature.java", 805 "patterns": [ 806 { 807 "begin": "(?=[^)])", 808 "end": "(?=\\))", 809 "name": "meta.method.parameters.groovy", 810 "patterns": [ 811 { 812 "begin": "(?=[^,)])", 813 "end": "(?=,|\\))", 814 "name": "meta.method.parameter.groovy", 815 "patterns": [ 816 { 817 "match": ",", 818 "name": "punctuation.definition.separator.groovy" 819 }, 820 { 821 "begin": "=", 822 "beginCaptures": { 823 "0": { 824 "name": "keyword.operator.assignment.groovy" 825 } 826 }, 827 "end": "(?=,|\\))", 828 "name": "meta.parameter.default.groovy", 829 "patterns": [ 830 { 831 "include": "#groovy-code" 832 } 833 ] 834 }, 835 { 836 "include": "#parameters" 837 } 838 ] 839 } 840 ] 841 } 842 ] 843 }, 844 { 845 "begin": "(?=<)", 846 "end": "(?=\\s)", 847 "name": "meta.method.paramerised-type.groovy", 848 "patterns": [ 849 { 850 "begin": "<", 851 "end": ">", 852 "name": "storage.type.parameters.groovy", 853 "patterns": [ 854 { 855 "include": "#types" 856 }, 857 { 858 "match": ",", 859 "name": "punctuation.definition.seperator.groovy" 860 } 861 ] 862 } 863 ] 864 }, 865 { 866 "begin": "throws", 867 "beginCaptures": { 868 "0": { 869 "name": "storage.modifier.groovy" 870 } 871 }, 872 "end": "(?={|;)|^(?=\\s*(?:[^{\\s]|$))", 873 "name": "meta.throwables.groovy", 874 "patterns": [ 875 { 876 "include": "#object-types" 877 } 878 ] 879 }, 880 { 881 "begin": "{", 882 "end": "(?=})", 883 "name": "meta.method.body.java", 884 "patterns": [ 885 { 886 "include": "#groovy-code" 887 } 888 ] 889 } 890 ] 891 }, 892 "methods": { 893 "applyEndPatternLast": 1, 894 "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))", 895 "end": "}|(?=[^{])", 896 "name": "meta.definition.method.groovy", 897 "patterns": [ 898 { 899 "include": "#method-content" 900 } 901 ] 902 }, 903 "nest_curly": { 904 "begin": "\\{", 905 "captures": { 906 "0": { 907 "name": "punctuation.section.scope.groovy" 908 } 909 }, 910 "end": "\\}", 911 "patterns": [ 912 { 913 "include": "#nest_curly" 914 } 915 ] 916 }, 917 "numbers": { 918 "patterns": [ 919 { 920 "match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b", 921 "name": "constant.numeric.groovy" 922 } 923 ] 924 }, 925 "object-types": { 926 "patterns": [ 927 { 928 "begin": "\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI]))<", 929 "end": ">|[^\\w\\s,\\?<\\[\\]]", 930 "name": "storage.type.generic.groovy", 931 "patterns": [ 932 { 933 "include": "#object-types" 934 }, 935 { 936 "begin": "<", 937 "comment": "This is just to support <>'s with no actual type prefix", 938 "end": ">|[^\\w\\s,\\[\\]<]", 939 "name": "storage.type.generic.groovy" 940 } 941 ] 942 }, 943 { 944 "begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)(?=\\[)", 945 "end": "(?=[^\\]\\s])", 946 "name": "storage.type.object.array.groovy", 947 "patterns": [ 948 { 949 "begin": "\\[", 950 "end": "\\]", 951 "patterns": [ 952 { 953 "include": "#groovy" 954 } 955 ] 956 } 957 ] 958 }, 959 { 960 "match": "\\b(?:[a-zA-Z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI])\\b", 961 "name": "storage.type.groovy" 962 } 963 ] 964 }, 965 "object-types-inherited": { 966 "patterns": [ 967 { 968 "begin": "\\b((?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)<", 969 "end": ">|[^\\w\\s,\\?<\\[\\]]", 970 "name": "entity.other.inherited-class.groovy", 971 "patterns": [ 972 { 973 "include": "#object-types-inherited" 974 }, 975 { 976 "begin": "<", 977 "comment": "This is just to support <>'s with no actual type prefix", 978 "end": ">|[^\\w\\s,\\[\\]<]", 979 "name": "storage.type.generic.groovy" 980 } 981 ] 982 }, 983 { 984 "captures": { 985 "1": { 986 "name": "keyword.operator.dereference.groovy" 987 } 988 }, 989 "match": "\\b(?:[a-zA-Z]\\w*(\\.))*[A-Z]+\\w*[a-z]+\\w*\\b", 990 "name": "entity.other.inherited-class.groovy" 991 } 992 ] 993 }, 994 "parameters": { 995 "patterns": [ 996 { 997 "include": "#annotations" 998 }, 999 { 1000 "include": "#storage-modifiers" 1001 }, 1002 { 1003 "include": "#types" 1004 }, 1005 { 1006 "match": "\\w+", 1007 "name": "variable.parameter.method.groovy" 1008 } 1009 ] 1010 }, 1011 "parens": { 1012 "begin": "\\(", 1013 "end": "\\)", 1014 "patterns": [ 1015 { 1016 "include": "#groovy-code" 1017 } 1018 ] 1019 }, 1020 "primitive-arrays": { 1021 "patterns": [ 1022 { 1023 "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b", 1024 "name": "storage.type.primitive.array.groovy" 1025 } 1026 ] 1027 }, 1028 "primitive-types": { 1029 "patterns": [ 1030 { 1031 "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b", 1032 "name": "storage.type.primitive.groovy" 1033 } 1034 ] 1035 }, 1036 "regexp": { 1037 "patterns": [ 1038 { 1039 "begin": "/(?=[^/]+/([^>]|$))", 1040 "beginCaptures": { 1041 "0": { 1042 "name": "punctuation.definition.string.regexp.begin.groovy" 1043 } 1044 }, 1045 "end": "/", 1046 "endCaptures": { 1047 "0": { 1048 "name": "punctuation.definition.string.regexp.end.groovy" 1049 } 1050 }, 1051 "name": "string.regexp.groovy", 1052 "patterns": [ 1053 { 1054 "match": "\\\\.", 1055 "name": "constant.character.escape.groovy" 1056 } 1057 ] 1058 }, 1059 { 1060 "begin": "~\"", 1061 "beginCaptures": { 1062 "0": { 1063 "name": "punctuation.definition.string.regexp.begin.groovy" 1064 } 1065 }, 1066 "end": "\"", 1067 "endCaptures": { 1068 "0": { 1069 "name": "punctuation.definition.string.regexp.end.groovy" 1070 } 1071 }, 1072 "name": "string.regexp.compiled.groovy", 1073 "patterns": [ 1074 { 1075 "match": "\\\\.", 1076 "name": "constant.character.escape.groovy" 1077 } 1078 ] 1079 } 1080 ] 1081 }, 1082 "storage-modifiers": { 1083 "patterns": [ 1084 { 1085 "match": "\\b(private|protected|public)\\b", 1086 "name": "storage.modifier.access-control.groovy" 1087 }, 1088 { 1089 "match": "\\b(static)\\b", 1090 "name": "storage.modifier.static.groovy" 1091 }, 1092 { 1093 "match": "\\b(final)\\b", 1094 "name": "storage.modifier.final.groovy" 1095 }, 1096 { 1097 "match": "\\b(native|synchronized|abstract|threadsafe|transient)\\b", 1098 "name": "storage.modifier.other.groovy" 1099 } 1100 ] 1101 }, 1102 "string-quoted-double": { 1103 "begin": "\"", 1104 "beginCaptures": { 1105 "0": { 1106 "name": "punctuation.definition.string.begin.groovy" 1107 } 1108 }, 1109 "end": "\"", 1110 "endCaptures": { 1111 "0": { 1112 "name": "punctuation.definition.string.end.groovy" 1113 } 1114 }, 1115 "name": "string.quoted.double.groovy", 1116 "patterns": [ 1117 { 1118 "include": "#string-quoted-double-contents" 1119 } 1120 ] 1121 }, 1122 "string-quoted-double-contents": { 1123 "patterns": [ 1124 { 1125 "match": "\\\\.", 1126 "name": "constant.character.escape.groovy" 1127 }, 1128 { 1129 "applyEndPatternLast": 1, 1130 "begin": "\\$\\w", 1131 "end": "(?=\\W)", 1132 "name": "variable.other.interpolated.groovy", 1133 "patterns": [ 1134 { 1135 "match": "\\w", 1136 "name": "variable.other.interpolated.groovy" 1137 }, 1138 { 1139 "match": "\\.", 1140 "name": "keyword.other.dereference.groovy" 1141 } 1142 ] 1143 }, 1144 { 1145 "begin": "\\$\\{", 1146 "captures": { 1147 "0": { 1148 "name": "punctuation.section.embedded.groovy" 1149 } 1150 }, 1151 "end": "\\}", 1152 "name": "source.groovy.embedded.source", 1153 "patterns": [ 1154 { 1155 "include": "#nest_curly" 1156 } 1157 ] 1158 } 1159 ] 1160 }, 1161 "string-quoted-double-multiline": { 1162 "begin": "\"\"\"", 1163 "beginCaptures": { 1164 "0": { 1165 "name": "punctuation.definition.string.begin.groovy" 1166 } 1167 }, 1168 "end": "\"\"\"", 1169 "endCaptures": { 1170 "0": { 1171 "name": "punctuation.definition.string.end.groovy" 1172 } 1173 }, 1174 "name": "string.quoted.double.multiline.groovy", 1175 "patterns": [ 1176 { 1177 "include": "#string-quoted-double-contents" 1178 } 1179 ] 1180 }, 1181 "string-quoted-single": { 1182 "begin": "'", 1183 "beginCaptures": { 1184 "0": { 1185 "name": "punctuation.definition.string.begin.groovy" 1186 } 1187 }, 1188 "end": "'", 1189 "endCaptures": { 1190 "0": { 1191 "name": "punctuation.definition.string.end.groovy" 1192 } 1193 }, 1194 "name": "string.quoted.single.groovy", 1195 "patterns": [ 1196 { 1197 "include": "#string-quoted-single-contents" 1198 } 1199 ] 1200 }, 1201 "string-quoted-single-contents": { 1202 "patterns": [ 1203 { 1204 "match": "\\\\.", 1205 "name": "constant.character.escape.groovy" 1206 } 1207 ] 1208 }, 1209 "string-quoted-single-multiline": { 1210 "begin": "'''", 1211 "beginCaptures": { 1212 "0": { 1213 "name": "punctuation.definition.string.begin.groovy" 1214 } 1215 }, 1216 "end": "'''", 1217 "endCaptures": { 1218 "0": { 1219 "name": "punctuation.definition.string.end.groovy" 1220 } 1221 }, 1222 "name": "string.quoted.single.multiline.groovy", 1223 "patterns": [ 1224 { 1225 "include": "#string-quoted-single-contents" 1226 } 1227 ] 1228 }, 1229 "strings": { 1230 "patterns": [ 1231 { 1232 "include": "#string-quoted-double-multiline" 1233 }, 1234 { 1235 "include": "#string-quoted-single-multiline" 1236 }, 1237 { 1238 "include": "#string-quoted-double" 1239 }, 1240 { 1241 "include": "#string-quoted-single" 1242 }, 1243 { 1244 "include": "#regexp" 1245 } 1246 ] 1247 }, 1248 "structures": { 1249 "begin": "\\[", 1250 "beginCaptures": { 1251 "0": { 1252 "name": "punctuation.definition.structure.begin.groovy" 1253 } 1254 }, 1255 "end": "\\]", 1256 "endCaptures": { 1257 "0": { 1258 "name": "punctuation.definition.structure.end.groovy" 1259 } 1260 }, 1261 "name": "meta.structure.groovy", 1262 "patterns": [ 1263 { 1264 "include": "#groovy-code" 1265 }, 1266 { 1267 "match": ",", 1268 "name": "punctuation.definition.separator.groovy" 1269 } 1270 ] 1271 }, 1272 "support-functions": { 1273 "patterns": [ 1274 { 1275 "match": "(?x)\\b(?:sprintf|print(?:f|ln)?)\\b", 1276 "name": "support.function.print.groovy" 1277 }, 1278 { 1279 "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", 1280 "name": "support.function.testing.groovy" 1281 } 1282 ] 1283 }, 1284 "types": { 1285 "patterns": [ 1286 { 1287 "match": "\\b(def)\\b", 1288 "name": "storage.type.def.groovy" 1289 }, 1290 { 1291 "include": "#primitive-types" 1292 }, 1293 { 1294 "include": "#primitive-arrays" 1295 }, 1296 { 1297 "include": "#object-types" 1298 } 1299 ] 1300 }, 1301 "values": { 1302 "patterns": [ 1303 { 1304 "include": "#language-variables" 1305 }, 1306 { 1307 "include": "#strings" 1308 }, 1309 { 1310 "include": "#numbers" 1311 }, 1312 { 1313 "include": "#constants" 1314 }, 1315 { 1316 "include": "#types" 1317 }, 1318 { 1319 "include": "#structures" 1320 }, 1321 { 1322 "include": "#method-call" 1323 } 1324 ] 1325 }, 1326 "variables": { 1327 "applyEndPatternLast": 1, 1328 "patterns": [ 1329 { 1330 "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))", 1331 "end": ";|$", 1332 "name": "meta.definition.variable.groovy", 1333 "patterns": [ 1334 { 1335 "match": "\\s" 1336 }, 1337 { 1338 "captures": { 1339 "1": { 1340 "name": "constant.variable.groovy" 1341 } 1342 }, 1343 "match": "([A-Z_0-9]+)\\s+(?=\\=)" 1344 }, 1345 { 1346 "captures": { 1347 "1": { 1348 "name": "meta.definition.variable.name.groovy" 1349 } 1350 }, 1351 "match": "(\\w[^\\s,]*)\\s+(?=\\=)" 1352 }, 1353 { 1354 "begin": "=", 1355 "beginCaptures": { 1356 "0": { 1357 "name": "keyword.operator.assignment.groovy" 1358 } 1359 }, 1360 "end": "$", 1361 "patterns": [ 1362 { 1363 "include": "#groovy-code" 1364 } 1365 ] 1366 }, 1367 { 1368 "captures": { 1369 "1": { 1370 "name": "meta.definition.variable.name.groovy" 1371 } 1372 }, 1373 "match": "(\\w[^\\s=]*)(?=\\s*($|;))" 1374 }, 1375 { 1376 "include": "#groovy-code" 1377 } 1378 ] 1379 } 1380 ] 1381 } 1382 }, 1383 "scopeName": "source.groovy", 1384 "uuid": "B3A64888-EBBB-4436-8D9E-F1169C5D7613" 1385 } 1386