├── .gitignore ├── Comments.tmPreferences ├── Kotlin.JSON-tmLanguage ├── Kotlin.sublime-build ├── Kotlin.tmLanguage ├── LICENSE ├── README.md └── scrot.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.cache 3 | *.sublime-project -------------------------------------------------------------------------------- /Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.Kotlin 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | // 17 | 18 | 19 | name 20 | TM_COMMENT_START_2 21 | value 22 | /* 23 | 24 | 25 | name 26 | TM_COMMENT_END_2 27 | value 28 | */ 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Kotlin.JSON-tmLanguage: -------------------------------------------------------------------------------- 1 | { "name": "Kotlin", 2 | "scopeName": "source.Kotlin", 3 | "fileTypes": ["kt", "kts"], 4 | "patterns": [ 5 | { 6 | "include": "#comments" 7 | }, 8 | { 9 | "captures": { 10 | "1": { 11 | "name": "keyword.other.kotlin" 12 | }, 13 | "2": { 14 | "name": "entity.name.package.kotlin" 15 | } 16 | }, 17 | "match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*)?" 18 | }, 19 | { 20 | "include": "#imports" 21 | }, 22 | { 23 | "include": "#statements" 24 | } 25 | ], 26 | "repository": { 27 | "statements": { 28 | "patterns": [ 29 | { 30 | "include": "#namespaces" 31 | }, 32 | { 33 | "include": "#typedefs" 34 | }, 35 | { 36 | "include": "#classes" 37 | }, 38 | { 39 | "include": "#functions" 40 | }, 41 | { 42 | "include": "#variables" 43 | }, 44 | { 45 | "include": "#getters-and-setters" 46 | }, 47 | { 48 | "include": "#expressions" 49 | } 50 | ] 51 | }, 52 | "comments": { 53 | "patterns": [ 54 | { 55 | "begin": "/\\*", 56 | "captures": { 57 | "0": { 58 | "name": "punctuation.definition.comment.kotlin" 59 | } 60 | }, 61 | "end": "\\*/", 62 | "name": "comment.block.kotlin" 63 | }, 64 | { 65 | "captures": { 66 | "1": { 67 | "name": "comment.line.double-slash.kotlin" 68 | }, 69 | "2": { 70 | "name": "punctuation.definition.comment.kotlin" 71 | } 72 | }, 73 | "match": "\\s*((//).*$\\n?)" 74 | } 75 | ] 76 | }, 77 | "imports": { 78 | "patterns": [ 79 | { 80 | "captures": { 81 | "1": { 82 | "name": "keyword.other.kotlin" 83 | }, 84 | "2": { 85 | "name": "keyword.other.kotlin" 86 | } 87 | }, 88 | "match": "^\\s*(import)\\s+[^ $]+\\s+(as)?" 89 | } 90 | ] 91 | }, 92 | "namespaces": { 93 | "patterns": [ 94 | { 95 | "match": "\\b(namespace)\\b", 96 | "name": "keyword.other.kotlin" 97 | }, 98 | { 99 | "begin": "\\{", 100 | "end": "\\}", 101 | "patterns": [ 102 | { 103 | "include": "#statements" 104 | } 105 | ] 106 | } 107 | ] 108 | }, 109 | "types": { 110 | "patterns": [ 111 | { 112 | "match": "\\b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\\b", 113 | "name": "storage.type.buildin.kotlin" 114 | }, 115 | { 116 | "match": "\\b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\\b", 117 | "name": "storage.type.buildin.array.kotlin" 118 | }, 119 | { 120 | "begin": "\\b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\\b", 121 | "beginCaptures": { 122 | "1": { 123 | "name": "storage.type.buildin.collection.kotlin" 124 | } 125 | }, 126 | "end": ">", 127 | "patterns": [ 128 | { 129 | "include": "#types" 130 | }, 131 | { 132 | "include": "#keywords" 133 | } 134 | ] 135 | }, 136 | { 137 | "begin": "\\w+<", 138 | "end": ">", 139 | "patterns": [ 140 | { 141 | "include": "#types" 142 | }, 143 | { 144 | "include": "#keywords" 145 | } 146 | ] 147 | }, 148 | { 149 | "begin": "\\{", 150 | "end": "\\}", 151 | "patterns": [ 152 | { 153 | "include": "#statements" 154 | } 155 | ] 156 | }, 157 | { 158 | "begin": "\\(", 159 | "end": "\\)", 160 | "patterns": [ 161 | { 162 | "include": "#types" 163 | } 164 | ] 165 | }, 166 | { 167 | "match": "(->)", 168 | "name": "keyword.operator.declaration.kotlin" 169 | } 170 | ] 171 | }, 172 | "generics": { 173 | "patterns": [ 174 | { 175 | "begin": "(:)", 176 | "beginCaptures": { 177 | "1": { 178 | "name": "keyword.operator.declaration.kotlin" 179 | } 180 | }, 181 | "end": "(?=,|>)", 182 | "patterns": [ 183 | { 184 | "include": "#types" 185 | } 186 | ] 187 | }, 188 | { 189 | "include": "#keywords" 190 | }, 191 | { 192 | "match": "\\w+", 193 | "name": "storage.type.generic.kotlin" 194 | } 195 | ] 196 | }, 197 | "typedefs": { 198 | "begin": "(?=\\s*(?:type))", 199 | "end": "(?=$)", 200 | "patterns": [ 201 | { 202 | "match": "\\b(type)\\b", 203 | "name": "keyword.other.kotlin" 204 | }, 205 | { 206 | "begin": "<", 207 | "end": ">", 208 | "patterns": [ 209 | { 210 | "include": "#generics" 211 | } 212 | ] 213 | }, 214 | { 215 | "include": "#expressions" 216 | } 217 | ] 218 | }, 219 | "classes": { 220 | "begin": "(?", 250 | "patterns": [ 251 | { 252 | "include": "#generics" 253 | } 254 | ] 255 | }, 256 | { 257 | "begin": "\\(", 258 | "end": "\\)", 259 | "patterns": [ 260 | { 261 | "include": "#parameters" 262 | } 263 | ] 264 | }, 265 | { 266 | "begin": "(:)", 267 | "beginCaptures": { 268 | "1": { 269 | "name": "keyword.operator.declaration.kotlin" 270 | } 271 | }, 272 | "end": "(?={|$)", 273 | "patterns": [ 274 | { 275 | "match": "\\w+", 276 | "name": "entity.other.inherited-class.kotlin" 277 | }, 278 | { 279 | "begin": "\\(", 280 | "end": "\\)", 281 | "patterns": [ 282 | { 283 | "include": "#expressions" 284 | } 285 | ] 286 | } 287 | ] 288 | }, 289 | { 290 | "begin": "\\{", 291 | "end": "\\}", 292 | "patterns": [ 293 | { 294 | "include": "#statements" 295 | } 296 | ] 297 | } 298 | ] 299 | }, 300 | "variables": { 301 | "begin": "(?=\\s*\\b(?:var|val)\\b)", 302 | "end": "(?=:|=|(\\b(by)\\b)|$)", 303 | "patterns": [ 304 | { 305 | "begin": "\\b(var|val)\\b", 306 | "beginCaptures": { 307 | "1": { 308 | "name": "keyword.other.kotlin" 309 | } 310 | }, 311 | "end": "(?=:|=|(\\b(by)\\b)|$)", 312 | "patterns": [ 313 | { 314 | "begin": "<", 315 | "end": ">", 316 | "patterns": [ 317 | { 318 | "include": "#generics" 319 | } 320 | ] 321 | }, 322 | { 323 | "captures": { 324 | "2": { 325 | "name": "entity.name.variable.kotlin" 326 | } 327 | }, 328 | "match": "([\\.<\\?>\\w]+\\.)?(\\w+)" 329 | } 330 | ] 331 | }, 332 | { 333 | "begin": "(:)", 334 | "beginCaptures": { 335 | "1": { 336 | "name": "keyword.operator.declaration.kotlin" 337 | } 338 | }, 339 | "end": "(?==|$)", 340 | "patterns": [ 341 | { 342 | "include": "#types" 343 | }, 344 | { 345 | "include": "#getters-and-setters" 346 | } 347 | ] 348 | }, 349 | { 350 | "begin": "\\b(by)\\b", 351 | "beginCaptures": { 352 | "1": { 353 | "name": "keyword.other.kotlin" 354 | } 355 | }, 356 | "end": "(?=$)", 357 | "patterns": [ 358 | { 359 | "include": "#expressions" 360 | } 361 | ] 362 | }, 363 | { 364 | "begin": "(=)", 365 | "beginCaptures": { 366 | "1": { 367 | "name": "keyword.operator.assignment.kotlin" 368 | } 369 | }, 370 | "end": "(?=$)", 371 | "patterns": [ 372 | { 373 | "include": "#expressions" 374 | }, 375 | { 376 | "include": "#getters-and-setters" 377 | } 378 | ] 379 | } 380 | ] 381 | }, 382 | "getters-and-setters": { 383 | "patterns": [ 384 | { 385 | "begin": "\\b(get)\\b\\s*\\(\\s*\\)", 386 | "beginCaptures": { 387 | "1": { 388 | "name": "entity.name.function.kotlin" 389 | } 390 | }, 391 | "end": "\\}|(?=\\bset\\b)|$", 392 | "patterns": [ 393 | { 394 | "begin": "(=)", 395 | "beginCaptures": { 396 | "1": { 397 | "name": "keyword.operator.assignment.kotlin" 398 | } 399 | }, 400 | "end": "(?=$|\\bset\\b)", 401 | "patterns": [ 402 | { 403 | "include": "#expressions" 404 | } 405 | ] 406 | }, 407 | { 408 | "begin": "\\{", 409 | "end": "\\}", 410 | "patterns": [ 411 | { 412 | "include": "#expressions" 413 | } 414 | ] 415 | } 416 | ] 417 | }, 418 | { 419 | "begin": "\\b(set)\\b\\s*(?=\\()", 420 | "beginCaptures": { 421 | "1": { 422 | "name": "entity.name.function.kotlin" 423 | } 424 | }, 425 | "end": "\\}|(?=\\bget\\b)|$", 426 | "patterns": [ 427 | { 428 | "begin": "\\(", 429 | "end": "\\)", 430 | "patterns": [ 431 | { 432 | "include": "#parameters" 433 | } 434 | ] 435 | }, 436 | { 437 | "begin": "(=)", 438 | "beginCaptures": { 439 | "1": { 440 | "name": "keyword.operator.assignment.kotlin" 441 | } 442 | }, 443 | "end": "(?=$|\\bset\\b)", 444 | "patterns": [ 445 | { 446 | "include": "#expressions" 447 | } 448 | ] 449 | }, 450 | { 451 | "begin": "\\{", 452 | "end": "\\}", 453 | "patterns": [ 454 | { 455 | "include": "#expressions" 456 | } 457 | ] 458 | } 459 | ] 460 | } 461 | ] 462 | }, 463 | "functions": { 464 | "begin": "(?=\\s*\\b(?:fun)\\b)", 465 | "end": "(?=$|\\})", 466 | "patterns": [ 467 | { 468 | "begin": "\\b(fun)\\b", 469 | "beginCaptures": { 470 | "1": { 471 | "name": "keyword.other.kotlin" 472 | } 473 | }, 474 | "end": "(?=\\()", 475 | "patterns": [ 476 | { 477 | "begin": "<", 478 | "end": ">", 479 | "patterns": [ 480 | { 481 | "include": "#generics" 482 | } 483 | ] 484 | }, 485 | { 486 | "captures": { 487 | "2": { 488 | "name": "entity.name.function.kotlin" 489 | } 490 | }, 491 | "match": "([\\.<\\?>\\w]+\\.)?(\\w+)" 492 | } 493 | ] 494 | }, 495 | { 496 | "begin": "\\(", 497 | "end": "\\)", 498 | "patterns": [ 499 | { 500 | "include": "#parameters" 501 | } 502 | ] 503 | }, 504 | { 505 | "begin": "(:)", 506 | "beginCaptures": { 507 | "1": { 508 | "name": "keyword.operator.declaration.kotlin" 509 | } 510 | }, 511 | "end": "(?={|=|$)", 512 | "patterns": [ 513 | { 514 | "include": "#types" 515 | } 516 | ] 517 | }, 518 | { 519 | "begin": "\\{", 520 | "end": "(?=\\})", 521 | "patterns": [ 522 | { 523 | "include": "#statements" 524 | } 525 | ] 526 | }, 527 | { 528 | "begin": "(=)", 529 | "beginCaptures": { 530 | "1": { 531 | "name": "keyword.operator.assignment.kotlin" 532 | } 533 | }, 534 | "end": "(?=$)", 535 | "patterns": [ 536 | { 537 | "include": "#expressions" 538 | } 539 | ] 540 | } 541 | ] 542 | }, 543 | "parameters": { 544 | "patterns": [ 545 | { 546 | "begin": "(:)", 547 | "beginCaptures": { 548 | "1": { 549 | "name": "keyword.operator.declaration.kotlin" 550 | } 551 | }, 552 | "end": "(?=,|\\)|=)", 553 | "patterns": [ 554 | { 555 | "include": "#types" 556 | } 557 | ] 558 | }, 559 | { 560 | "begin": "(=)", 561 | "beginCaptures": { 562 | "1": { 563 | "name": "keyword.operator.declaration.kotlin" 564 | } 565 | }, 566 | "end": "(?=,|\\))", 567 | "patterns": [ 568 | { 569 | "include" : "#expressions" 570 | } 571 | ] 572 | }, 573 | { 574 | "include": "#keywords" 575 | }, 576 | { 577 | "match": "\\w+", 578 | "name": "variable.parameter.function.kotlin" 579 | } 580 | ] 581 | }, 582 | "expressions": { 583 | "patterns": [ 584 | { 585 | "begin": "\\(", 586 | "end": "\\)", 587 | "patterns": [ 588 | { 589 | "include": "#expressions" 590 | } 591 | ] 592 | }, 593 | { 594 | "include": "#types" 595 | }, 596 | { 597 | "include": "#strings" 598 | }, 599 | { 600 | "include": "#constants" 601 | }, 602 | { 603 | "include": "#comments" 604 | }, 605 | { 606 | "include": "#keywords" 607 | } 608 | ] 609 | }, 610 | "strings": { 611 | "patterns": [ 612 | { 613 | "begin": "\"\"\"", 614 | "beginCaptures": { 615 | "0": { 616 | "name": "punctuation.definition.string.begin.kotlin" 617 | } 618 | }, 619 | "end": "\"\"\"", 620 | "endCaptures": { 621 | "0": { 622 | "name": "punctuation.definition.string.end.kotlin" 623 | } 624 | }, 625 | "name": "string.quoted.third.kotlin", 626 | "patterns": [ 627 | { 628 | "match": "(\\$\\w+|\\$\\{[^\\}]+\\})", 629 | "name": "variable.parameter.template.kotlin" 630 | }, 631 | { 632 | "match": "\\\\.", 633 | "name": "constant.character.escape.kotlin" 634 | } 635 | ] 636 | }, 637 | { 638 | "begin": "\"", 639 | "beginCaptures": { 640 | "0": { 641 | "name": "punctuation.definition.string.begin.kotlin" 642 | } 643 | }, 644 | "end": "\"", 645 | "endCaptures": { 646 | "0": { 647 | "name": "punctuation.definition.string.end.kotlin" 648 | } 649 | }, 650 | "name": "string.quoted.double.kotlin", 651 | "patterns": [ 652 | { 653 | "match": "(\\$\\w+|\\$\\{[^\\}]+\\})", 654 | "name": "variable.parameter.template.kotlin" 655 | }, 656 | { 657 | "match": "\\\\.", 658 | "name": "constant.character.escape.kotlin" 659 | } 660 | ] 661 | }, 662 | { 663 | "begin": "'", 664 | "beginCaptures": { 665 | "0": { 666 | "name": "punctuation.definition.string.begin.kotlin" 667 | } 668 | }, 669 | "end": "'", 670 | "endCaptures": { 671 | "0": { 672 | "name": "punctuation.definition.string.end.kotlin" 673 | } 674 | }, 675 | "name": "string.quoted.single.kotlin", 676 | "patterns": [ 677 | { 678 | "match": "\\\\.", 679 | "name": "constant.character.escape.kotlin" 680 | } 681 | ] 682 | }, 683 | { 684 | "begin": "`", 685 | "beginCaptures": { 686 | "0": { 687 | "name": "punctuation.definition.string.begin.kotlin" 688 | } 689 | }, 690 | "end": "`", 691 | "endCaptures": { 692 | "0": { 693 | "name": "punctuation.definition.string.end.kotlin" 694 | } 695 | }, 696 | "name": "string.quoted.single.kotlin" 697 | } 698 | ] 699 | }, 700 | "constants": { 701 | "patterns": [ 702 | { 703 | "match": "\\b(true|false|null|this|super)\\b", 704 | "name": "constant.language.kotlin" 705 | }, 706 | { 707 | "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFf])?\\b", 708 | "name": "constant.numeric.kotlin" 709 | }, 710 | { 711 | "match": "\\b([A-Z][A-Z0-9_]+)\\b", 712 | "name": "constant.other.kotlin" 713 | } 714 | ] 715 | }, 716 | "keywords": { 717 | "patterns": [ 718 | { 719 | "match": "\\b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\\b", 720 | "name": "storage.modifier.kotlin" 721 | }, 722 | { 723 | "match": "\\b(try|catch|finally|throw)\\b", 724 | "name": "keyword.control.catch-exception.kotlin" 725 | }, 726 | { 727 | "match": "\\b(if|else|while|for|do|return|when|where|break|continue)\\b", 728 | "name": "keyword.control.kotlin" 729 | }, 730 | { 731 | "match": "\\b(in|is|!in|!is|as|as\\?|assert)\\b", 732 | "name": "keyword.operator.kotlin" 733 | }, 734 | { 735 | "match": "(==|!=|===|!==|<=|>=|<|>)", 736 | "name": "keyword.operator.comparison.kotlin" 737 | }, 738 | { 739 | "match": "(=)", 740 | "name": "keyword.operator.assignment.kotlin" 741 | }, 742 | { 743 | "match": "(::)", 744 | "name": "keyword.operator.kotlin" 745 | }, 746 | { 747 | "match": "(:)", 748 | "name": "keyword.operator.declaration.kotlin" 749 | }, 750 | { 751 | "match": "\\b(by)\\b", 752 | "name": "keyword.other.by.kotlin" 753 | }, 754 | { 755 | "match": "(\\?\\.)", 756 | "name": "keyword.operator.safenav.kotlin" 757 | }, 758 | { 759 | "match": "(\\.)", 760 | "name": "keyword.operator.dot.kotlin" 761 | }, 762 | { 763 | "match": "(\\?:)", 764 | "name": "keyword.operator.elvis.kotlin" 765 | }, 766 | { 767 | "match": "(\\-\\-|\\+\\+)", 768 | "name": "keyword.operator.increment-decrement.kotlin" 769 | }, 770 | { 771 | "match": "(\\+=|\\-=|\\*=|\\/=)", 772 | "name": "keyword.operator.arithmetic.assign.kotlin" 773 | }, 774 | { 775 | "match": "(\\.\\.)", 776 | "name": "keyword.operator.range.kotlin" 777 | }, 778 | { 779 | "match": "(\\-|\\+|\\*|\\/|%)", 780 | "name": "keyword.operator.arithmetic.kotlin" 781 | }, 782 | { 783 | "match": "(!|&&|\\|\\|)", 784 | "name": "keyword.operator.logical.kotlin" 785 | }, 786 | { 787 | "match": "(;)", 788 | "name": "punctuation.terminator.kotlin" 789 | } 790 | ] 791 | } 792 | }, 793 | "uuid": "d508c059-a938-4779-b2bc-ff43a5078907" 794 | } 795 | -------------------------------------------------------------------------------- /Kotlin.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "path" : "/usr/local/bin:$PATH", 3 | "selector" : "source.Kotlin", 4 | "file_regex": "^(.*):([0-9]+):([0-9]+): (?:error|warning):(.*)", 5 | "cmd" : "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar", 6 | "variants": [{ 7 | "cmd": "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar", 8 | "name": "Compile" 9 | },{ 10 | "cmd": "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar || exit 1; java -jar ${file_base_name}.jar", 11 | "name": "Compile + run" 12 | },{ 13 | "name": "Run", 14 | "cmd": "java -jar ${file_base_name}.jar" 15 | }], 16 | "shell" : "true", 17 | "windows" : { 18 | "path" : "$PATH" 19 | } 20 | } -------------------------------------------------------------------------------- /Kotlin.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | kt 8 | kts 9 | 10 | name 11 | Kotlin 12 | patterns 13 | 14 | 15 | include 16 | #comments 17 | 18 | 19 | captures 20 | 21 | 1 22 | 23 | name 24 | keyword.other.kotlin 25 | 26 | 2 27 | 28 | name 29 | entity.name.package.kotlin 30 | 31 | 32 | match 33 | ^\s*(package)\b(?:\s*([^ ;$]+)\s*)? 34 | 35 | 36 | include 37 | #imports 38 | 39 | 40 | include 41 | #statements 42 | 43 | 44 | repository 45 | 46 | classes 47 | 48 | begin 49 | (?<!::)(?=\b(?:companion|class|object|interface)\b) 50 | end 51 | (?=$|\}) 52 | patterns 53 | 54 | 55 | include 56 | #comments 57 | 58 | 59 | begin 60 | \b(companion\s*)?(class|object|interface)\b 61 | beginCaptures 62 | 63 | 1 64 | 65 | name 66 | storage.modifier.kotlin 67 | 68 | 2 69 | 70 | name 71 | storage.modifier.kotlin 72 | 73 | 74 | end 75 | (?=<|\{|\(|:|$) 76 | patterns 77 | 78 | 79 | include 80 | #comments 81 | 82 | 83 | match 84 | \w+ 85 | name 86 | entity.name.type.class.kotlin 87 | 88 | 89 | 90 | 91 | begin 92 | < 93 | end 94 | > 95 | patterns 96 | 97 | 98 | include 99 | #generics 100 | 101 | 102 | 103 | 104 | begin 105 | \( 106 | end 107 | \) 108 | patterns 109 | 110 | 111 | include 112 | #parameters 113 | 114 | 115 | 116 | 117 | begin 118 | (:) 119 | beginCaptures 120 | 121 | 1 122 | 123 | name 124 | keyword.operator.declaration.kotlin 125 | 126 | 127 | end 128 | (?={|$) 129 | patterns 130 | 131 | 132 | match 133 | \w+ 134 | name 135 | entity.other.inherited-class.kotlin 136 | 137 | 138 | begin 139 | \( 140 | end 141 | \) 142 | patterns 143 | 144 | 145 | include 146 | #expressions 147 | 148 | 149 | 150 | 151 | 152 | 153 | begin 154 | \{ 155 | end 156 | \} 157 | patterns 158 | 159 | 160 | include 161 | #statements 162 | 163 | 164 | 165 | 166 | 167 | comments 168 | 169 | patterns 170 | 171 | 172 | begin 173 | /\* 174 | captures 175 | 176 | 0 177 | 178 | name 179 | punctuation.definition.comment.kotlin 180 | 181 | 182 | end 183 | \*/ 184 | name 185 | comment.block.kotlin 186 | 187 | 188 | captures 189 | 190 | 1 191 | 192 | name 193 | comment.line.double-slash.kotlin 194 | 195 | 2 196 | 197 | name 198 | punctuation.definition.comment.kotlin 199 | 200 | 201 | match 202 | \s*((//).*$\n?) 203 | 204 | 205 | 206 | constants 207 | 208 | patterns 209 | 210 | 211 | match 212 | \b(true|false|null|this|super)\b 213 | name 214 | constant.language.kotlin 215 | 216 | 217 | match 218 | \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFf])?\b 219 | name 220 | constant.numeric.kotlin 221 | 222 | 223 | match 224 | \b([A-Z][A-Z0-9_]+)\b 225 | name 226 | constant.other.kotlin 227 | 228 | 229 | 230 | expressions 231 | 232 | patterns 233 | 234 | 235 | begin 236 | \( 237 | end 238 | \) 239 | patterns 240 | 241 | 242 | include 243 | #expressions 244 | 245 | 246 | 247 | 248 | include 249 | #types 250 | 251 | 252 | include 253 | #strings 254 | 255 | 256 | include 257 | #constants 258 | 259 | 260 | include 261 | #comments 262 | 263 | 264 | include 265 | #keywords 266 | 267 | 268 | 269 | functions 270 | 271 | begin 272 | (?=\s*\b(?:fun)\b) 273 | end 274 | (?=$|\}) 275 | patterns 276 | 277 | 278 | begin 279 | \b(fun)\b 280 | beginCaptures 281 | 282 | 1 283 | 284 | name 285 | keyword.other.kotlin 286 | 287 | 288 | end 289 | (?=\() 290 | patterns 291 | 292 | 293 | begin 294 | < 295 | end 296 | > 297 | patterns 298 | 299 | 300 | include 301 | #generics 302 | 303 | 304 | 305 | 306 | captures 307 | 308 | 2 309 | 310 | name 311 | entity.name.function.kotlin 312 | 313 | 314 | match 315 | ([\.<\?>\w]+\.)?(\w+) 316 | 317 | 318 | 319 | 320 | begin 321 | \( 322 | end 323 | \) 324 | patterns 325 | 326 | 327 | include 328 | #parameters 329 | 330 | 331 | 332 | 333 | begin 334 | (:) 335 | beginCaptures 336 | 337 | 1 338 | 339 | name 340 | keyword.operator.declaration.kotlin 341 | 342 | 343 | end 344 | (?={|=|$) 345 | patterns 346 | 347 | 348 | include 349 | #types 350 | 351 | 352 | 353 | 354 | begin 355 | \{ 356 | end 357 | (?=\}) 358 | patterns 359 | 360 | 361 | include 362 | #statements 363 | 364 | 365 | 366 | 367 | begin 368 | (=) 369 | beginCaptures 370 | 371 | 1 372 | 373 | name 374 | keyword.operator.assignment.kotlin 375 | 376 | 377 | end 378 | (?=$) 379 | patterns 380 | 381 | 382 | include 383 | #expressions 384 | 385 | 386 | 387 | 388 | 389 | generics 390 | 391 | patterns 392 | 393 | 394 | begin 395 | (:) 396 | beginCaptures 397 | 398 | 1 399 | 400 | name 401 | keyword.operator.declaration.kotlin 402 | 403 | 404 | end 405 | (?=,|>) 406 | patterns 407 | 408 | 409 | include 410 | #types 411 | 412 | 413 | 414 | 415 | include 416 | #keywords 417 | 418 | 419 | match 420 | \w+ 421 | name 422 | storage.type.generic.kotlin 423 | 424 | 425 | 426 | getters-and-setters 427 | 428 | patterns 429 | 430 | 431 | begin 432 | \b(get)\b\s*\(\s*\) 433 | beginCaptures 434 | 435 | 1 436 | 437 | name 438 | entity.name.function.kotlin 439 | 440 | 441 | end 442 | \}|(?=\bset\b)|$ 443 | patterns 444 | 445 | 446 | begin 447 | (=) 448 | beginCaptures 449 | 450 | 1 451 | 452 | name 453 | keyword.operator.assignment.kotlin 454 | 455 | 456 | end 457 | (?=$|\bset\b) 458 | patterns 459 | 460 | 461 | include 462 | #expressions 463 | 464 | 465 | 466 | 467 | begin 468 | \{ 469 | end 470 | \} 471 | patterns 472 | 473 | 474 | include 475 | #expressions 476 | 477 | 478 | 479 | 480 | 481 | 482 | begin 483 | \b(set)\b\s*(?=\() 484 | beginCaptures 485 | 486 | 1 487 | 488 | name 489 | entity.name.function.kotlin 490 | 491 | 492 | end 493 | \}|(?=\bget\b)|$ 494 | patterns 495 | 496 | 497 | begin 498 | \( 499 | end 500 | \) 501 | patterns 502 | 503 | 504 | include 505 | #parameters 506 | 507 | 508 | 509 | 510 | begin 511 | (=) 512 | beginCaptures 513 | 514 | 1 515 | 516 | name 517 | keyword.operator.assignment.kotlin 518 | 519 | 520 | end 521 | (?=$|\bset\b) 522 | patterns 523 | 524 | 525 | include 526 | #expressions 527 | 528 | 529 | 530 | 531 | begin 532 | \{ 533 | end 534 | \} 535 | patterns 536 | 537 | 538 | include 539 | #expressions 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | imports 548 | 549 | patterns 550 | 551 | 552 | captures 553 | 554 | 1 555 | 556 | name 557 | keyword.other.kotlin 558 | 559 | 2 560 | 561 | name 562 | keyword.other.kotlin 563 | 564 | 565 | match 566 | ^\s*(import)\s+[^ $]+\s+(as)? 567 | 568 | 569 | 570 | keywords 571 | 572 | patterns 573 | 574 | 575 | match 576 | \b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\b 577 | name 578 | storage.modifier.kotlin 579 | 580 | 581 | match 582 | \b(try|catch|finally|throw)\b 583 | name 584 | keyword.control.catch-exception.kotlin 585 | 586 | 587 | match 588 | \b(if|else|while|for|do|return|when|where|break|continue)\b 589 | name 590 | keyword.control.kotlin 591 | 592 | 593 | match 594 | \b(in|is|!in|!is|as|as\?|assert)\b 595 | name 596 | keyword.operator.kotlin 597 | 598 | 599 | match 600 | (==|!=|===|!==|<=|>=|<|>) 601 | name 602 | keyword.operator.comparison.kotlin 603 | 604 | 605 | match 606 | (=) 607 | name 608 | keyword.operator.assignment.kotlin 609 | 610 | 611 | match 612 | (::) 613 | name 614 | keyword.operator.kotlin 615 | 616 | 617 | match 618 | (:) 619 | name 620 | keyword.operator.declaration.kotlin 621 | 622 | 623 | match 624 | \b(by)\b 625 | name 626 | keyword.other.by.kotlin 627 | 628 | 629 | match 630 | (\?\.) 631 | name 632 | keyword.operator.safenav.kotlin 633 | 634 | 635 | match 636 | (\.) 637 | name 638 | keyword.operator.dot.kotlin 639 | 640 | 641 | match 642 | (\?:) 643 | name 644 | keyword.operator.elvis.kotlin 645 | 646 | 647 | match 648 | (\-\-|\+\+) 649 | name 650 | keyword.operator.increment-decrement.kotlin 651 | 652 | 653 | match 654 | (\+=|\-=|\*=|\/=) 655 | name 656 | keyword.operator.arithmetic.assign.kotlin 657 | 658 | 659 | match 660 | (\.\.) 661 | name 662 | keyword.operator.range.kotlin 663 | 664 | 665 | match 666 | (\-|\+|\*|\/|%) 667 | name 668 | keyword.operator.arithmetic.kotlin 669 | 670 | 671 | match 672 | (!|&&|\|\|) 673 | name 674 | keyword.operator.logical.kotlin 675 | 676 | 677 | match 678 | (;) 679 | name 680 | punctuation.terminator.kotlin 681 | 682 | 683 | 684 | namespaces 685 | 686 | patterns 687 | 688 | 689 | match 690 | \b(namespace)\b 691 | name 692 | keyword.other.kotlin 693 | 694 | 695 | begin 696 | \{ 697 | end 698 | \} 699 | patterns 700 | 701 | 702 | include 703 | #statements 704 | 705 | 706 | 707 | 708 | 709 | parameters 710 | 711 | patterns 712 | 713 | 714 | begin 715 | (:) 716 | beginCaptures 717 | 718 | 1 719 | 720 | name 721 | keyword.operator.declaration.kotlin 722 | 723 | 724 | end 725 | (?=,|\)|=) 726 | patterns 727 | 728 | 729 | include 730 | #types 731 | 732 | 733 | 734 | 735 | begin 736 | (=) 737 | beginCaptures 738 | 739 | 1 740 | 741 | name 742 | keyword.operator.declaration.kotlin 743 | 744 | 745 | end 746 | (?=,|\)) 747 | patterns 748 | 749 | 750 | include 751 | #expressions 752 | 753 | 754 | 755 | 756 | include 757 | #keywords 758 | 759 | 760 | match 761 | \w+ 762 | name 763 | variable.parameter.function.kotlin 764 | 765 | 766 | 767 | statements 768 | 769 | patterns 770 | 771 | 772 | include 773 | #namespaces 774 | 775 | 776 | include 777 | #typedefs 778 | 779 | 780 | include 781 | #classes 782 | 783 | 784 | include 785 | #functions 786 | 787 | 788 | include 789 | #variables 790 | 791 | 792 | include 793 | #getters-and-setters 794 | 795 | 796 | include 797 | #expressions 798 | 799 | 800 | 801 | strings 802 | 803 | patterns 804 | 805 | 806 | begin 807 | """ 808 | beginCaptures 809 | 810 | 0 811 | 812 | name 813 | punctuation.definition.string.begin.kotlin 814 | 815 | 816 | end 817 | """ 818 | endCaptures 819 | 820 | 0 821 | 822 | name 823 | punctuation.definition.string.end.kotlin 824 | 825 | 826 | name 827 | string.quoted.third.kotlin 828 | patterns 829 | 830 | 831 | match 832 | (\$\w+|\$\{[^\}]+\}) 833 | name 834 | variable.parameter.template.kotlin 835 | 836 | 837 | match 838 | \\. 839 | name 840 | constant.character.escape.kotlin 841 | 842 | 843 | 844 | 845 | begin 846 | " 847 | beginCaptures 848 | 849 | 0 850 | 851 | name 852 | punctuation.definition.string.begin.kotlin 853 | 854 | 855 | end 856 | " 857 | endCaptures 858 | 859 | 0 860 | 861 | name 862 | punctuation.definition.string.end.kotlin 863 | 864 | 865 | name 866 | string.quoted.double.kotlin 867 | patterns 868 | 869 | 870 | match 871 | (\$\w+|\$\{[^\}]+\}) 872 | name 873 | variable.parameter.template.kotlin 874 | 875 | 876 | match 877 | \\. 878 | name 879 | constant.character.escape.kotlin 880 | 881 | 882 | 883 | 884 | begin 885 | ' 886 | beginCaptures 887 | 888 | 0 889 | 890 | name 891 | punctuation.definition.string.begin.kotlin 892 | 893 | 894 | end 895 | ' 896 | endCaptures 897 | 898 | 0 899 | 900 | name 901 | punctuation.definition.string.end.kotlin 902 | 903 | 904 | name 905 | string.quoted.single.kotlin 906 | patterns 907 | 908 | 909 | match 910 | \\. 911 | name 912 | constant.character.escape.kotlin 913 | 914 | 915 | 916 | 917 | begin 918 | ` 919 | beginCaptures 920 | 921 | 0 922 | 923 | name 924 | punctuation.definition.string.begin.kotlin 925 | 926 | 927 | end 928 | ` 929 | endCaptures 930 | 931 | 0 932 | 933 | name 934 | punctuation.definition.string.end.kotlin 935 | 936 | 937 | name 938 | string.quoted.single.kotlin 939 | 940 | 941 | 942 | typedefs 943 | 944 | begin 945 | (?=\s*(?:type)) 946 | end 947 | (?=$) 948 | patterns 949 | 950 | 951 | match 952 | \b(type)\b 953 | name 954 | keyword.other.kotlin 955 | 956 | 957 | begin 958 | < 959 | end 960 | > 961 | patterns 962 | 963 | 964 | include 965 | #generics 966 | 967 | 968 | 969 | 970 | include 971 | #expressions 972 | 973 | 974 | 975 | types 976 | 977 | patterns 978 | 979 | 980 | match 981 | \b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b 982 | name 983 | storage.type.buildin.kotlin 984 | 985 | 986 | match 987 | \b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b 988 | name 989 | storage.type.buildin.array.kotlin 990 | 991 | 992 | begin 993 | \b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\b 994 | beginCaptures 995 | 996 | 1 997 | 998 | name 999 | storage.type.buildin.collection.kotlin 1000 | 1001 | 1002 | end 1003 | > 1004 | patterns 1005 | 1006 | 1007 | include 1008 | #types 1009 | 1010 | 1011 | include 1012 | #keywords 1013 | 1014 | 1015 | 1016 | 1017 | begin 1018 | \w+< 1019 | end 1020 | > 1021 | patterns 1022 | 1023 | 1024 | include 1025 | #types 1026 | 1027 | 1028 | include 1029 | #keywords 1030 | 1031 | 1032 | 1033 | 1034 | begin 1035 | \{ 1036 | end 1037 | \} 1038 | patterns 1039 | 1040 | 1041 | include 1042 | #statements 1043 | 1044 | 1045 | 1046 | 1047 | begin 1048 | \( 1049 | end 1050 | \) 1051 | patterns 1052 | 1053 | 1054 | include 1055 | #types 1056 | 1057 | 1058 | 1059 | 1060 | match 1061 | (->) 1062 | name 1063 | keyword.operator.declaration.kotlin 1064 | 1065 | 1066 | 1067 | variables 1068 | 1069 | begin 1070 | (?=\s*\b(?:var|val)\b) 1071 | end 1072 | (?=:|=|(\b(by)\b)|$) 1073 | patterns 1074 | 1075 | 1076 | begin 1077 | \b(var|val)\b 1078 | beginCaptures 1079 | 1080 | 1 1081 | 1082 | name 1083 | keyword.other.kotlin 1084 | 1085 | 1086 | end 1087 | (?=:|=|(\b(by)\b)|$) 1088 | patterns 1089 | 1090 | 1091 | begin 1092 | < 1093 | end 1094 | > 1095 | patterns 1096 | 1097 | 1098 | include 1099 | #generics 1100 | 1101 | 1102 | 1103 | 1104 | captures 1105 | 1106 | 2 1107 | 1108 | name 1109 | entity.name.variable.kotlin 1110 | 1111 | 1112 | match 1113 | ([\.<\?>\w]+\.)?(\w+) 1114 | 1115 | 1116 | 1117 | 1118 | begin 1119 | (:) 1120 | beginCaptures 1121 | 1122 | 1 1123 | 1124 | name 1125 | keyword.operator.declaration.kotlin 1126 | 1127 | 1128 | end 1129 | (?==|$) 1130 | patterns 1131 | 1132 | 1133 | include 1134 | #types 1135 | 1136 | 1137 | include 1138 | #getters-and-setters 1139 | 1140 | 1141 | 1142 | 1143 | begin 1144 | \b(by)\b 1145 | beginCaptures 1146 | 1147 | 1 1148 | 1149 | name 1150 | keyword.other.kotlin 1151 | 1152 | 1153 | end 1154 | (?=$) 1155 | patterns 1156 | 1157 | 1158 | include 1159 | #expressions 1160 | 1161 | 1162 | 1163 | 1164 | begin 1165 | (=) 1166 | beginCaptures 1167 | 1168 | 1 1169 | 1170 | name 1171 | keyword.operator.assignment.kotlin 1172 | 1173 | 1174 | end 1175 | (?=$) 1176 | patterns 1177 | 1178 | 1179 | include 1180 | #expressions 1181 | 1182 | 1183 | include 1184 | #getters-and-setters 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | scopeName 1192 | source.Kotlin 1193 | uuid 1194 | d508c059-a938-4779-b2bc-ff43a5078907 1195 | 1196 | 1197 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright 2012-2014 Vladimir Kostyukov 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Kotlin Sublime Text Package 2 | ============================= 3 | 4 | This is [Sublime Text](http://www.sublimetext.com/) package for [Kotlin](http://kotlin.jetbrains.org/) programming language. 5 | 6 | ![Kotlin Sublime Text 2 Package Screenshoot](https://raw.github.com/vkostyukov/kotlin-sublime-package/master/scrot.png) 7 | 8 | Overview 9 | -------- 10 | 11 | The following modules already implemented: 12 | 13 | * Kotlin Syntax Defenition Kotlin.tmLanguage 14 | 15 | Download 16 | -------- 17 | 18 | - The latest avaliable archived package: [Kotlin.sublime-package](https://github.com/downloads/vkostyukov/kotlin-sublime-package/Kotlin.sublime-package) 19 | - Tagged zip: [kotlin-sublime-package-1.0.zip](https://github.com/vkostyukov/kotlin-sublime-package/archive/kotlin-sublime-package-1.0.zip) 20 | - Current zipball: [kotlin-sublime-package-master.zip](https://github.com/vkostyukov/kotlin-sublime-package/archive/master.zip) 21 | 22 | Installation 23 | ----------- 24 | 25 | There are three ways to install Kotlin Sublime Package: 26 | 27 | - Using archived package (kotlin.sublime-package) 28 | - Using version control system (GitHub) 29 | - Using raw files (Kotlin.tmLanguage) from repository tree 30 | 31 | There is [an instruction](http://sublimetext.info/docs/en/extensibility/packages.html) with detailed steps for any type of installation. 32 | 33 | Contribution 34 | ------------ 35 | 36 | If you want to contribute to this project, first of all you need to download the latest version of [AAAPackageDev](https://bitbucket.org/guillermooo/aaapackagedev) - useful tool for Sublime Text Packages developing. 37 | Then you can follow the tutorials: 38 | 39 | * [Syntax Defenitions](http://sublimetext.info/docs/en/extensibility/syntaxdefs.html) for changing the syntax defenition file 40 | * [Snippets](http://sublimetext.info/docs/en/extensibility/snippets.html) for changing the snippet files 41 | 42 | There is also [a full documentation](http://sublimetext.info/docs/en/extensibility/extensibility.html) of Sublime Text extending. 43 | 44 | The best way to contribute is to send pull-requests though GitHub interface. 45 | 46 | Links 47 | ----- 48 | 49 | * https://github.com/vkostyukov/kotlin-sublime-package 50 | * http://www.sublimetext.com/ 51 | * http://kotlin.jetbrains.org/ 52 | 53 | ---- 54 | by [Vladimir Kostyukov](https://twitter.com/vkostyukov), 2017 55 | -------------------------------------------------------------------------------- /scrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vkostyukov/kotlin-sublime-package/aeeed2780b04aea3d293c547c24cae27cafef0c5/scrot.png --------------------------------------------------------------------------------