diff --git a/Groovy/Fold.tmPreferences b/Groovy/Fold.tmPreferences deleted file mode 100644 index b14a351173..0000000000 --- a/Groovy/Fold.tmPreferences +++ /dev/null @@ -1,25 +0,0 @@ - - - - scope - source.groovy - settings - - foldScopes - - - begin - punctuation.definition.parameters.begin - end - punctuation.definition.parameters.end - - - begin - punctuation.definition.method-parameters.begin - end - punctuation.definition.method-parameters.end - - - - - diff --git a/Groovy/Groovy.sublime-syntax b/Groovy/Groovy.sublime-syntax deleted file mode 100644 index 975d3089d9..0000000000 --- a/Groovy/Groovy.sublime-syntax +++ /dev/null @@ -1,681 +0,0 @@ -%YAML 1.2 ---- -# http://www.sublimetext.com/docs/3/syntax.html -name: Groovy -scope: source.groovy - -file_extensions: - - groovy - - gvy - - gradle - -hidden_file_extensions: - - Jenkinsfile - -first_line_match: |- - (?xi: - ^ \#! .* \bgroovy\b # shebang - | ^ \s* // .*? -\*- .*? \bgroovy\b .*? -\*- # editorconfig - ) - -variables: - unicode_letter: |- - (?:(?xi) - # Valid unicode letters according to: - # http://groovy-lang.org/syntax.html#_normal_identifiers - # Literal Unicode Escaped Unicode - [\x{00C0}-\x{00D6}] | \\u00C[0-9A-F] | \\u00D[0-6] - | [\x{00D8}-\x{00F6}] | \\u00D[89A-F] | \\u00E[0-9A-F] | \\u00F[0-6] - | [\x{00F8}-\x{00FF}] | \\u00F[89A-F] - | [\x{0100}-\x{FFFE}] | \\u0[1-9A-F][0-9A-F]{2} | \\u(?!FFFF)[1-9A-F][0-9A-F]{3} - ) - - # dollars aren't allowed in the single dollar interpolated identifiers - # (dotted expressions), but they are supposed to be valid characters - # in identifiers in other contexts - # e.g. `"$$a"` is invalid, but `"${$a}"` is fine. - single_dollar_interpolation_identifier: (?:{{unicode_letter}}|[a-zA-Z_])(?:{{unicode_letter}}|[a-zA-Z0-9_])* - primitive: (?:boolean|byte|char|short|int|float|long|double)\b - -contexts: - main: - - match: ^(#!).+$\n - scope: comment.line.hashbang.groovy - captures: - 1: punctuation.definition.comment.groovy - - match: '^\s*(package)\s+([^ ;]+)' - scope: meta.package.groovy - captures: - 1: keyword.other.package.groovy - 2: storage.type.package.groovy - - match: '^\s*(import)\s+([^ ;$]+);?' - scope: meta.import.groovy - captures: - 1: keyword.other.import.groovy - 2: storage.type.import.groovy - - include: groovy - class-object: - - match: |- - (?x) - \b( - (?:[a-z]\w*\.)* # Optional package specification - [A-Z]\w+\b # Class name - (?:<(?:[\w, ]*)>)? # Optional Generics - (?:\[\s*\])* # Optional brackets (array) - )\b - scope: storage.type.class.groovy - classes: - - match: |- - (?x)^\s* - (?:(?:\b(?:(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s*)*) # modifier - (class)\s+ - (\w+)\s* # identifier - captures: - 1: storage.modifier.access-control.groovy - 2: storage.modifier.static.groovy - 3: storage.modifier.final.groovy - 4: storage.modifier.other.groovy - 5: storage.type.class.groovy - 6: entity.name.type.class.groovy - push: - - meta_scope: meta.definition.class.groovy - - match: $|(?=\}) - pop: true - - match: '(extends)\s+([a-zA-Z0-9_\.]+(?:<(?:[a-zA-Z0-9_, ])+>)?)\s*' - scope: meta.definition.class.inherited.classes.groovy - captures: - 1: storage.modifier.extends.groovy - 2: entity.other.inherited-class.groovy - - match: (implements)\s - captures: - 1: storage.modifier.implements.groovy - push: - - meta_scope: meta.definition.class.implemented.interfaces.groovy - - match: '(?=\s*extends|$|\{)' - pop: true - - match: '((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)' - captures: - 1: entity.other.inherited-class.interface.groovy - 2: punctuation.definition.implemented.interfaces.separator.groovy - comment-block: - - match: /\* - scope: punctuation.definition.comment.groovy - push: inside-comment-block - inside-comment-block: - - meta_scope: comment.block.groovy - - match: \*/ - scope: punctuation.definition.comment.groovy - pop: true - comments: - - match: /\*\*/ - scope: comment.block.empty.groovy punctuation.definition.comment.groovy - - include: scope:text.html.javadoc - - include: comment-block - - match: // - scope: punctuation.definition.comment.groovy - push: inside-line-comment - - include: merge-conflict-markers - inside-line-comment: - - meta_scope: comment.line.double-slash.groovy - - match: $\n? - pop: true - merge-conflict-markers: - # see also: Diff.sublime-syntax#conflict-markers - - match: ^(<{7})(?:\s+(\S.*?))?$\n? - scope: meta.block.conflict.begin.diff - captures: - 1: punctuation.section.block.begin.diff - 2: entity.name.section.diff - - match: ^(>{7})(?:\s+(\S.*?))?$\n? - scope: meta.block.conflict.end.diff - captures: - 1: punctuation.section.block.end.diff - 2: entity.name.section.diff - - match: ^(\|{7}|={7})(?:\s+(\S.*?))?$\n? - scope: meta.block.conflict.separator.diff - captures: - 1: punctuation.section.block.diff - 2: entity.name.section.diff - constants: - - match: \b([A-Z][A-Z0-9_]+)\b(?!\s*:) - scope: constant.other.groovy - - match: \bfalse\b - scope: constant.language.boolean.false.groovy - - match: \btrue\b - scope: constant.language.boolean.true.groovy - - match: \bnull\b - scope: constant.language.null.groovy - groovy: - - include: classes - - include: methods - - include: groovy-code - groovy-code: - - include: map-keys - - include: groovy-code-minus-map-keys - - include: block - groovy-code-minus-map-keys: - - include: comments - - include: support-functions - - include: keyword-language - - include: values - - include: keyword-operator - - include: storage-types - - include: storage-modifiers - keyword: - - include: keyword-operator - - include: keyword-language - keyword-language: - - match: \bthrow\b - scope: keyword.control.flow.throw.groovy - - match: \btry\b - scope: keyword.control.exception.try.groovy - - match: \bfinally\b - scope: keyword.control.exception.finally.groovy - - match: \bcatch\b - scope: keyword.control.exception.catch.groovy - - match: \bdefault\b - scope: keyword.control.conditional.groovy - - match: \bfor\b - scope: keyword.control.loop.for.groovy - - match: \bwhile\b - scope: keyword.control.loop.while.groovy - - match: \bdo\b - scope: keyword.control.loop.do-while.groovy - - match: \breturn\b - scope: keyword.control.flow.return.groovy - - match: \bbreak\b - scope: keyword.control.flow.break.groovy - - match: \bcontinue\b - scope: keyword.control.flow.continue.groovy - - match: \bif\b - scope: keyword.control.conditional.if.groovy - - match: \belse\b - scope: keyword.control.conditional.else.groovy - - match: \bswitch\b - scope: keyword.control.conditional.switch.groovy - - match: \bcase\b - scope: keyword.control.conditional.case.groovy - push: - - meta_scope: meta.case.groovy - - match: ":" - scope: punctuation.definition.case-terminator.groovy - pop: true - - include: groovy-code-minus-map-keys - - match: \bnew\b - scope: keyword.operator.new.groovy - - match: \bassert\b - scope: keyword.control.exception.assert.groovy - push: - - meta_scope: meta.declaration.assertion.groovy - - match: $|(?=\}) - pop: true - - match: ":" - scope: keyword.operator.assert.expression-separator.groovy - - include: groovy-code-minus-map-keys - - match: \bthrows\b - scope: keyword.control.exception.groovy - keyword-operator: - - match: \bas\b - scope: keyword.operator.as.groovy - - match: \bis\b - scope: keyword.operator.reflection.groovy - - match: '\?\:' - scope: keyword.operator.elvis.groovy - - match: \.\. - scope: keyword.operator.range.groovy - - match: \-> - scope: keyword.operator.arrow.groovy - - match: "<<" - scope: keyword.operator.bitwise.groovy - - match: (?<=\S)\.(?=\S) - scope: punctuation.accessor.dot.groovy - - match: (?<=\S)\?\.(?=\S) - scope: punctuation.accessor.null-coalescing.groovy - - match: \? - scope: keyword.operator.ternary.groovy - push: - - meta_scope: meta.evaluation.ternary.groovy - - match: $|(?=\}) - pop: true - - match: ":" - scope: keyword.operator.ternary.expression-separator.groovy - - include: groovy-code-minus-map-keys - - match: "==~" - scope: keyword.operator.match.groovy - - match: "=~" - scope: keyword.operator.find.groovy - - match: \b(instanceof)\b - scope: keyword.operator.instanceof.groovy - - match: (===|==|!=|<=|>=|<=>|<>|<|>|<<) - scope: keyword.operator.comparison.groovy - - match: "=" - scope: keyword.operator.assignment.groovy - - match: (\-\-|\+\+) - scope: keyword.operator.increment-decrement.groovy - - match: (\-|\+|\*|\/|%) - scope: keyword.operator.arithmetic.groovy - - match: (!|&&|\|\|) - scope: keyword.operator.logical.groovy - map-keys: - - match: (\w+)\s*(:) - captures: - 1: constant.other.key.groovy - 2: punctuation.definition.separator.key-value.groovy - method-call: - - match: (\w+)(\() - captures: - 1: meta.function-call.identifier.groovy variable.function.groovy - 2: meta.function-call.arguments.groovy punctuation.section.arguments.begin.groovy - push: - - meta_content_scope: meta.function-call.arguments.groovy - - match: \) - scope: meta.function-call.groovy punctuation.section.arguments.end.groovy - pop: true - - match: "," - scope: punctuation.definition.separator.parameter.groovy - - include: groovy-code - method-declaration-remainder: - - match: \( - scope: punctuation.definition.parameters.begin.groovy - push: - - meta_content_scope: meta.definition.method.parameters.groovy - - match: \) - scope: punctuation.definition.parameters.end.groovy - pop: true - - match: |- - (?x)\s* - ( - (?:{{primitive}}|(?:\w+\.)*[A-Z]\w*\b(?:<(?:[\w, ]*)>)?(?:\[\s*\])*) - )? - \s* - ([a-z_][A-Za-z0-9_]*) # variable - scope: meta.definition.method.parameter.groovy - captures: - 1: storage.type.parameter.groovy - 2: variable.parameter.groovy - - match: '({{primitive}}|(?:\w+\.)*[A-Z]\w*\b(?:<(?:[\w, ]*)>)?(?:\[\s*\])*)' - scope: meta.definition.method.parameter.groovy - captures: - 1: storage.type.parameter.groovy - - match: "," - scope: punctuation.definition.parameters.separator.groovy - - include: comment-block - - match: (?<=\))\s*(throws)\s - captures: - 1: storage.modifier.throws.groovy - push: - - meta_scope: meta.definition.method.throwables.groovy - - match: '(?=$|\{)' - captures: - 1: storage.modifier.throws.groovy - pop: true - - match: '((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)' - captures: - 1: storage.type.throwable.groovy - 2: punctuation.definition.throwables.separator.groovy - methods: - - match: |- - (?x)^\s* - (?: # zero or more modifiers - (?: - (public|private|protected)|(final)|(native|synchronized|abstract|threadsafe|transient) - ) - \s+ - )? - \s* - ([A-Z](?:[a-zA-Z0-9_])+) # constructor/class name - \s* - (?=\() - captures: - 1: storage.modifier.access-control.groovy - 2: storage.modifier.final.groovy - 3: storage.modifier.other.groovy - 4: entity.name.function.constructor.groovy - 5: punctuation.definition.parameters.begin.groovy - push: - - meta_scope: meta.definition.constructor.groovy - - match: '(?={)|$\n?' - pop: true - - include: method-declaration-remainder - - match: |- - (?x)^\s* - (?: - (?: # or modifier and optional type - (?:(?:\b(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s+)+\s* # modifier - (?:\b - (void\b) - | - ({{primitive}}) # primitive - | - ( # or class type - (?:\w+\.)*[A-Z]\w+\b # Class name - (?:<(?:[\w, ]*)>)? # optional Generic type - (?:\[\s*\])* # zero or more square brackets (array) - ) - )? - ) - | - (?:\b # or type by itself - (def\b) - | - (void\b) - | - ({{primitive}}) # primitive - | - ( # or class type - (?:\w+\.)*[A-Z]\w+\b # Class name - (?:<(?:[\w, ]*)>)? # optional generics info - (?:\[\s*\])* # zero or more square brackets (array) - ) - ) - ) - \s* - (\w+) # method name - \s* - (?=\() # opening parens - captures: - 1: storage.modifier.access-control.groovy - 2: storage.modifier.static.groovy - 3: storage.modifier.final.groovy - 4: storage.modifier.other.groovy - 5: storage.type.return-type.void.groovy - 6: storage.type.return-type.primitive.groovy - 7: storage.type.return-type.class.groovy - 8: keyword.declaration.function.groovy - 9: storage.type.return-type.void.groovy - 10: storage.type.return-type.primitive.groovy - 11: storage.type.return-type.class.groovy - 12: entity.name.function.groovy - push: - - meta_scope: meta.definition.method.groovy - - match: '(?={)|$\n?' - pop: true - - include: method-declaration-remainder - block: - - match: '\{' - scope: punctuation.section.block.begin.groovy - push: - - meta_scope: meta.block.groovy - - match: '\}' - scope: punctuation.section.block.end.groovy - pop: true - - include: groovy-code - numbers: - - match: '((0(x|X)[0-9a-fA-F]*)|(\+|-)?\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b' - scope: constant.numeric.groovy - regexp: - - match: "/(?=[^/]+/)" - scope: punctuation.definition.string.regexp.begin.groovy - push: inside-regexp - inside-regexp: - - meta_scope: string.regexp.groovy - - match: / - scope: punctuation.definition.string.regexp.end.groovy - pop: true - # backslashes only escape forward slashes and newlines (and unicode) - - match: \\/ - scope: constant.character.escape.groovy - - include: escaped-end-of-line - - include: unicode-escape-sequence - - include: single-dollar-string-interpolation - - match: '\$\{' - scope: punctuation.section.interpolation.begin.groovy - push: - - meta_scope: source.groovy.embedded.source - - match: '\}' - scope: punctuation.section.interpolation.end.groovy - pop: true - - include: escaped-end-of-line - # newlines are invalid inside the interpolation - # but outside of a nested multiline string - - match: '\n' - scope: invalid.illegal.newline.groovy - pop: true - - include: groovy-code - storage-modifiers: - - match: \b(private|protected|public)\b - scope: storage.modifier.access-control.groovy - - match: \b(static)\b - scope: storage.modifier.static.groovy - - match: \b(final)\b - scope: storage.modifier.final.groovy - - match: \b(native|synchronized|abstract|threadsafe|transient)\b - scope: storage.modifier.other.groovy - storage-types: - - match: '(@[^ (]+)(\()' - captures: - 1: storage.type.annotation.groovy - 2: punctuation.definition.annotation-arguments.begin.groovy - push: inside-annotation - - match: '@\S+' - scope: storage.type.annotation.groovy - - match: \b(def)\b - scope: storage.type.def.groovy - - match: '\b({{primitive}})(?:\[\s*\])*\b' - scope: storage.type.primitive.groovy - inside-annotation: - - meta_scope: meta.declaration.annotation.groovy - - match: (\)) - captures: - 1: punctuation.definition.annotation-arguments.end.groovy - pop: true - - match: (\w*)\s*(=) - captures: - 1: constant.other.key.groovy - 2: keyword.operator.assignment.groovy - - include: values - - match: "," - scope: punctuation.definition.separator.groovy - single-dollar-string-interpolation: - - match: \${{single_dollar_interpolation_identifier}} - scope: variable.other.interpolated.groovy - push: - - match: \.(?={{single_dollar_interpolation_identifier}}) - scope: punctuation.accessor.dot.groovy - - match: '{{single_dollar_interpolation_identifier}}' - scope: variable.other.interpolated.groovy - - match: \b - pop: true - unicode-escape-sequence: - - match: \\u\h{4} - scope: constant.character.escape.groovy - - match: \\u(?!\h{4}).{4} - scope: invalid.illegal.escape.groovy - escaped-end-of-line: - - match: \\\n - scope: constant.character.escape.groovy - push: - - match: ^ - pop: true - string-escape-sequences: - - include: unicode-escape-sequence - - include: escaped-end-of-line - - match: |- - \\[nrtbf\$\\'"] - scope: constant.character.escape.groovy - - match: \\. - scope: invalid.illegal.escape.groovy - string-quoted-double: - - match: '"' - scope: punctuation.definition.string.begin.groovy - push: - - meta_scope: string.quoted.double.groovy - - match: '"' - scope: punctuation.definition.string.end.groovy - pop: true - - match: '\n' - scope: invalid.illegal.unclosed-string.groovy - pop: true - - include: string-escape-sequences - - include: single-dollar-string-interpolation - - match: '\$\{' - scope: punctuation.section.interpolation.begin.groovy - push: - - meta_scope: source.groovy.embedded.source - - match: '\}' - scope: punctuation.section.interpolation.end.groovy - pop: true - - include: escaped-end-of-line - # we don't consume the newline here, so that - # the outer scope handles it and pops correctly - - match: '(?=\n)' - pop: true - - include: groovy-code - # anything else following a dollar sign is not a valid interpolation - - match: \$(?=") - scope: invalid.illegal.identifier.groovy - - match: \$[^"]+ - scope: invalid.illegal.identifier.groovy - string-quoted-single: - - match: "'" - scope: punctuation.definition.string.begin.groovy - push: - - meta_scope: string.quoted.single.groovy - - match: "'" - scope: punctuation.definition.string.end.groovy - pop: true - - match: '\n' - scope: invalid.illegal.unclosed-string.groovy - pop: true - - include: string-escape-sequences - string-quoted-triple-single: - - match: "'''" - scope: punctuation.definition.string.begin.groovy - push: - - meta_scope: string.quoted.single.block.groovy - - match: "'''" - scope: punctuation.definition.string.end.groovy - pop: true - - include: string-escape-sequences - string-quoted-triple-double: - - match: '"""' - scope: punctuation.definition.string.begin.groovy - push: - - meta_scope: string.quoted.double.block.groovy - - match: '""""' - scope: invalid.illegal - pop: true - - match: '"""' - scope: punctuation.definition.string.end.groovy - pop: true - - include: string-escape-sequences - - include: single-dollar-string-interpolation - - include: string-interpolation-multiple-lines - # anything else following a dollar sign is not a valid interpolation - - match: \$(?=") - scope: invalid.illegal.groovy - - match: \$[^"]+ - scope: invalid.illegal.groovy - string-interpolation-multiple-lines: - - match: '\$\{' - scope: punctuation.section.interpolation.begin.groovy - push: - - meta_scope: source.groovy.embedded.source - - match: '\}' - scope: punctuation.section.interpolation.end.groovy - pop: true - - include: escaped-end-of-line - - include: groovy-code - string-dollar-slashy: - - match: '\$/' - scope: punctuation.definition.string.begin.groovy - push: - - meta_scope: string.quoted.other.dollar-slashy.groovy - - match: '/\$' - scope: punctuation.definition.string.end.groovy - pop: true - - match: '\$/|\$\$' - scope: constant.character.escape.groovy - # backslashes only escape newlines (and unicode) - - include: escaped-end-of-line - - include: unicode-escape-sequence - - include: single-dollar-string-interpolation - - match: '\$\{' - scope: punctuation.section.interpolation.begin.groovy - push: - - meta_scope: source.groovy.embedded.source - - match: '\}' - scope: punctuation.section.interpolation.end.groovy - pop: true - - include: escaped-end-of-line - - include: groovy-code - strings: - - include: string-quoted-triple-double - - include: string-quoted-triple-single - - include: string-quoted-double - - include: string-quoted-single - - include: regexp - - include: string-dollar-slashy - structures: - - match: '\[' - scope: punctuation.definition.structure.begin.groovy - push: inside-structure - inside-structure: - - meta_scope: meta.structure.groovy - - match: '\]' - scope: punctuation.definition.structure.end.groovy - pop: true - - include: groovy-code - - match: "," - scope: punctuation.definition.separator.groovy - support-functions: - - match: (?x)\b(?:sprintf|print(?:f|ln)?)\b - scope: support.function.print.groovy - - match: |- - (?x)\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same| - Null)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length| - ArrayEquals)))\b - scope: support.function.testing.groovy - - match: (?x)\b(?:sleep|inspect|dump|use|with)\b - scope: support.function.other.groovy - values: - - include: strings - - include: numbers - - include: constants - - include: class-object - - include: structures - - include: method-call - - include: variables - - match: \( - scope: punctuation.section.group.begin.groovy - push: inside-parens - variables: - - match: \b(this|super)\b - scope: variable.language.groovy - - match: \b(sh)\s+(''') - captures: - 1: support.function.groovy - 2: meta.string.embedded-shell.groovy punctuation.definition.string.begin.groovy - embed: scope:source.shell.bash - embed_scope: meta.string.embedded-shell.groovy string.quoted.single.block.groovy - escape: "'''" - escape_captures: - 0: meta.string.embedded-shell.groovy punctuation.definition.string.end.groovy - #- include: string-escape-sequences - - match: \b(sh)\s+(""") - captures: - 1: support.function.groovy - 2: meta.string.embedded-shell.groovy punctuation.definition.string.begin.groovy - embed: scope:source.shell.bash - embed_scope: meta.string.embedded-shell.groovy string.quoted.double.block.groovy - escape: '"""' - escape_captures: - 0: meta.string.embedded-shell.groovy punctuation.definition.string.end.groovy - #- include: string-interpolation-multiple-lines - - match: \b(sh)\s+(') - captures: - 1: support.function.groovy - 2: meta.string.embedded-shell.groovy punctuation.definition.string.begin.groovy - embed: scope:source.shell.bash - embed_scope: meta.string.embedded-shell.groovy string.quoted.single.groovy - escape: \' - escape_captures: - 0: meta.string.embedded-shell.groovy punctuation.definition.string.end.groovy - - match: \b(?!def\b)(?![A-Z])\w+\b(?!\s+\w) - scope: variable.other.readwrite.groovy - inside-parens: - - meta_scope: meta.group.groovy - - match: \) - scope: punctuation.section.group.end.groovy - pop: true - - include: groovy-code-minus-map-keys diff --git a/Groovy/syntax_test_groovy.groovy b/Groovy/syntax_test_groovy.groovy deleted file mode 100644 index 1604461227..0000000000 --- a/Groovy/syntax_test_groovy.groovy +++ /dev/null @@ -1,114 +0,0 @@ -// SYNTAX TEST "Packages/Groovy/Groovy.sublime-syntax" - -// Merge Conflict Marker Tests - -<<<<<<< HEAD -// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff -//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff -// ^ meta.block.conflict.begin.diff - entity - punctuation -// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff -// ^ meta.block.conflict.begin.diff - entity - punctuation - -======= -// <- meta.block.conflict.separator.diff punctuation.section.block.diff -//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff -// ^ meta.block.conflict.separator.diff - punctuation - ->>>>>>> master -// <- meta.block.conflict.end.diff punctuation.section.block.end.diff -//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff -// ^ meta.block.conflict.end.diff - entity - punctuation -// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff -// ^ meta.block.conflict.end.diff - entity - punctuation - -// Tests for issue 1260 - -def defectiveSyntaxTest(String value) { -// <- meta.definition.method.groovy keyword.declaration.function.groovy -// ^^^^^^^^^^^^^^^^^^^ entity.name.function -// ^ meta.definition.method.groovy punctuation.definition.parameters.begin.groovy -// ^^^^^^ storage.type.parameter -// ^^^^^ variable.parameter -// ^ meta.definition.method.groovy punctuation.definition.parameters.end.groovy - println value -} - -void voidCheck(String value) { -// <- storage.type.return-type -// ^ entity.name.function -// ^ entity.name.function -// ^ storage.type.parameter -// ^ variable.parameter -} - -double interpretString(String value) { -// <- storage.type.return-type -// ^ entity.name.function -// ^ entity.name.function -// ^ storage.type.parameter -// ^ variable.parameter - return Double.parseDouble(value); -} - -defectiveSyntaxTest("hello") -// <- meta.function-call.identifier -//^^^^^^^^^^^^^^^^^ meta.function-call.identifier -// ^ meta.function-call.arguments.groovy punctuation.section.arguments.begin.groovy -// ^^^^^^^ meta.function-call.arguments.groovy string.quoted.double.groovy -// ^ meta.function-call.groovy punctuation.section.arguments.end.groovy - -voidCheck(123456) -// <- meta.function-call.identifier.groovy variable.function.groovy -//^^^^^^^ meta.function-call.identifier.groovy variable.function.groovy -// ^ meta.function-call.arguments.groovy punctuation.section.arguments.begin.groovy -// ^^^^^^ meta.function-call.arguments.groovy constant.numeric.groovy -// ^ meta.function-call.groovy punctuation.section.arguments.end.groovy -// ^ - meta.function-call - -chartHistogram([1,1,2,3]) -// <- meta.function-call.identifier.groovy variable.function.groovy -//^^^^^^^^^^^^ meta.function-call.identifier.groovy variable.function.groovy -// ^^^^^^^^^^ meta.function-call.arguments.groovy -// ^ punctuation.section.arguments.begin.groovy -// ^^^^^^^^^ meta.structure.groovy -// ^ punctuation.definition.structure.begin.groovy -// ^ constant.numeric.groovy -// ^ punctuation.definition.separator.groovy -// ^ punctuation.definition.structure.end.groovy -// ^ meta.function-call.groovy punctuation.section.arguments.end.groovy - meta.structure - -def greeting = "Hello ${true ? 'World' : 'Home'}" -// <- storage.type.def -//^ storage.type.def -// ^ keyword.operator.assignment -// ^ punctuation.definition.string.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double -// ^^ punctuation.section.interpolation.begin -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.groovy.embedded.source -// ^^^^ constant.language -// ^^^^^^^^^^^^^^^^^^ meta.evaluation.ternary -// ^^ - meta.evaluation.ternary -// ^ keyword.operator.ternary -// ^ punctuation.definition.string.begin -// ^^^^^^^ string.quoted.single -// ^ punctuation.definition.string.end -// ^ keyword.operator.ternary.expression-separator -// ^ punctuation.definition.string.begin -// ^^^^^^ string.quoted.single -// ^ punctuation.definition.string.end -// ^ punctuation.section.interpolation.end -// ^ punctuation.definition.string.end -// ^ - string.quoted - invalid - -def str = " -// ^ string.quoted.double.groovy punctuation.definition.string.begin.groovy -// ^ string.quoted.double.groovy invalid.illegal.unclosed-string.groovy - " -//^ string.quoted.double.groovy punctuation.definition.string.begin.groovy -// ^ string.quoted.double.groovy invalid.illegal.unclosed-string.groovy -def str = "\ -// ^ string.quoted.double.groovy punctuation.definition.string.begin.groovy -// ^^ string.quoted.double.groovy constant.character.escape.groovy -def str = "\ - " -//^ string.quoted.double.groovy punctuation.definition.string.end.groovy diff --git a/Groovy/tests/syntax_test_Strings.groovy b/Groovy/tests/syntax_test_Strings.groovy deleted file mode 100644 index 44fed6ea09..0000000000 --- a/Groovy/tests/syntax_test_Strings.groovy +++ /dev/null @@ -1,298 +0,0 @@ -// SYNTAX TEST "Packages/Groovy/Groovy.sublime-syntax" - -multilineSingle = ''' -// ^^^ string.quoted.single.block.groovy punctuation.definition.string.begin.groovy - ''' -//^^^ string.quoted.single.block.groovy punctuation.definition.string.end.groovy - -multilineDouble = """ -// ^^^ string.quoted.double.block.groovy punctuation.definition.string.begin.groovy - """ -//^^^ string.quoted.double.block.groovy punctuation.definition.string.end.groovy - -multilineDollarSlashy = $/ -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.begin.groovy - /$ -//^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -escapedNewlineSingle = '\ -// ^ string.quoted.single.groovy punctuation.definition.string.begin.groovy -// ^^ string.quoted.single.groovy constant.character.escape.groovy - invalid.illegal.unclosed-string.groovy - -escapedNewlineDouble = "\ -// ^ string.quoted.double.groovy punctuation.definition.string.begin.groovy -// ^^ string.quoted.double.groovy constant.character.escape.groovy - invalid.illegal.unclosed-string.groovy - -escapeNewlineTripleSingle = '''\ -// ^^^ string.quoted.single.block.groovy punctuation.definition.string.begin.groovy -// ^^ string.quoted.single.block.groovy constant.character.escape.groovy - invalid.illegal.unclosed-string.groovy - ''' -//^^^ string.quoted.single.block.groovy punctuation.definition.string.end.groovy - -escapeNewlineTripleDouble = """\ -// ^^^ string.quoted.double.block.groovy punctuation.definition.string.begin.groovy -// ^^ string.quoted.double.block.groovy constant.character.escape.groovy - invalid.illegal.unclosed-string.groovy - """ -//^^^ string.quoted.double.block.groovy punctuation.definition.string.end.groovy - -escapedNewlineInterpolated = "${\ -// ^^ string.quoted.double.groovy source.groovy.embedded.source constant.character.escape.groovy -}"; - -escapeInterpolation = "\${notInterpolated}" -// ^^ constant.character.escape.groovy - punctuation.section.embedded.groovy -// ^^^^^^^^^^^^^^^^^ string.quoted.double.groovy - source.groovy.embedded.source - -validEscapesSingle = '\$\'\"\t\n\r\t\f\b\u00D7\\' -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.single.groovy constant.character.escape.groovy - -validEscapesDouble = "\$\'\"\t\n\r\t\f\b\u00D7\\" -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.groovy constant.character.escape.groovy - -validEscapesTripleSingle = '''\$\'\"\t\n\r\t\f\b\u00D7\\''' -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.single.block.groovy constant.character.escape.groovy - -validEscapesTripleDouble = """\$\'\"\t\n\r\t\f\b\u00D7\\""" -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.block.groovy constant.character.escape.groovy - -validEscapesSlashy= /\/\u00D7/ -// ^^^^^^^^ string.regexp.groovy constant.character.escape.groovy - -invalidEscapesSingle = '\y \1 \+ \{' -// ^^^^^^^^^^^ string.quoted.single.groovy - constant.character.escape.groovy - -invalidEscapesDouble = "\y \1 \+ \{" -// ^^^^^^^^^^^ string.quoted.double.groovy - constant.character.escape.groovy - -invalidEscapesTripleSingle = '''\y \1 \+ \{''' -// ^^^^^^^^^^^ string.quoted.single.block.groovy - constant.character.escape.groovy - -invalidEscapesTripleDouble = """\y \1 \+ \{""" -// ^^^^^^^^^^^ string.quoted.double.block.groovy - constant.character.escape.groovy - -regularCharactersSlashy = /\$\'\"\t\n\r\t\f\b\y\1\+\{/ -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.regexp.groovy - constant.character.escape.groovy - -regularCharactersDollarSlashy = $/\$\'\"\t\n\r\t\f\b\y\1\+\{/$ -// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.other.dollar-slashy.groovy - constant.character.escape.groovy - -interpolation1 = "2 + 3 = ${2 + 3}" -// ^^ punctuation.section.interpolation.begin.groovy -// ^^^^^ source.groovy.embedded.source -// ^ constant.numeric.groovy -// ^ keyword.operator.arithmetic.groovy -// ^ constant.numeric.groovy -// ^ punctuation.section.interpolation.end.groovy -// ^ punctuation.definition.string.end.groovy - -interpolation3 = "Hello $name" -// ^^^^^ variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -interpolation4 = "Hello $person.name" -// ^^^^^^^ variable.other.interpolated.groovy -// ^ punctuation.accessor.dot.groovy -// ^^^^ string.quoted.double.groovy variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -interpolation5 = "$a2_3" -// ^^^^^ string.quoted.double.groovy variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -interpolation6 = "The sum of 1 and 2 is equal to ${def a = 1; a + 2}" -// ^^^^^^^^^^^^^^^^ string.quoted.double.groovy source.groovy.embedded.source -// ^^^ storage.type.def.groovy -// ^ constant.numeric.groovy -// ^ keyword.operator.arithmetic.groovy -// ^ constant.numeric.groovy -// ^ punctuation.definition.string.end.groovy - -interpolation7 = "foo { ${if (x) { y } else { z } } }" -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.groovy -// ^ - punctuation -// ^^ keyword.control.conditional.if.groovy -// ^ punctuation.section.block.begin.groovy -// ^ punctuation.section.block.end.groovy - punctuation.section.interpolation -// ^^^^ keyword.control.conditional.else.groovy -// ^ punctuation.section.block.begin.groovy -// ^ punctuation.section.block.end.groovy - punctuation.section.interpolation -// ^ punctuation.section.interpolation.end.groovy -// ^ - punctuation -// ^ punctuation.definition.string.end.groovy - -unicodeInterpolation1 = "$À" -// ^^ variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -unicodeInterpolation2 = "$À.ö" -// ^^ variable.other.interpolated.groovy -// ^ punctuation.accessor.dot.groovy -// ^ variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -unicodeInterpolation3 = "$\u00c0.\u00F6" -// ^^^^^^^ variable.other.interpolated.groovy -// ^ punctuation.accessor.dot.groovy -// ^^^^^^ variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -invalidInterpolation1 = "$" -// ^ invalid.illegal -// ^ punctuation.definition.string.end.groovy - -invalidInterpolation2 = "$21" -// ^^^ invalid.illegal - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -invalidInterpolation3 = "$$" -// ^^ invalid.illegal - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -notAnAccessorDot1 = "$obj." -// ^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^ - punctuation.accessor.dot.groovy -// ^ punctuation.definition.string.end.groovy - variable.other.interpolated.groovy - -notAnAccessorDot2 = "$obj.2" -// ^^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^ - punctuation.accessor.dot.groovy -// ^ - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -notAnAccessorDot3 = "$obj.×" -// ^^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^ - punctuation.accessor.dot.groovy -// ^ - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -notAnAccessorDot4 = "$obj.\u00D7" -// ^^^^^^^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^ - punctuation.accessor.dot.groovy -// ^^^^^^ constant.character.escape.groovy - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -notASafeNavigation = "$obj?.nope" -// ^^^^^^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^^ - punctuation.accessor.groovy -// ^^^^ - variable.other.interpolated.groovy -// ^ punctuation.definition.string.end.groovy - -notAMethodCall = "$obj.nope()" -// ^^^^^^^^^^^ string.quoted.double.groovy -// ^^^^ variable.other.interpolated.groovy -// ^ punctuation.accessor.dot.groovy -// ^^^^ variable.other.interpolated.groovy -// ^^^^^^ - meta.method-call.groovy -// ^ punctuation.definition.string.end.groovy - -lazyInterpolation = "lazy ${-> someVariable}" -// ^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.groovy -// ^^ keyword.operator.arrow.groovy -// ^ punctuation.definition.string.end.groovy - -invalidStringClose = """"""" -// ^^^^ invalid.illegal - -unclosedStr1 = " -// ^ invalid.illegal.unclosed-string.groovy - -unclosedStr2 = ' -// ^ invalid.illegal.unclosed-string.groovy - -unclosedStr3 = "newlines ${''' - aren't valid inside the interpolation but outside of the - multiline string -'''} -// ^ invalid.illegal.unclosed-string.groovy - -unclosedStr4 = "newlines ${''' - aren't valid inside the interpolation but outside of the - multiline string''' -// ^ invalid.illegal.unclosed-string.groovy - -// multiline string embedded in a single line string -embed1 = "embed ${''' -// ^ string.quoted.double.groovy punctuation.definition.string.begin.groovy -// ^^^^^^ string.quoted.double.groovy -// ^^ punctuation.section.interpolation.begin.groovy -// ^^^ source.groovy.embedded.source - Some text -//^^^^^^^^^ string.quoted.double.groovy source.groovy.embedded.source string.quoted.single.block.groovy -'''}" -// ^ punctuation.section.interpolation.end.groovy -// ^ string.quoted.double.groovy punctuation.definition.string.end.groovy - -// multiline > singleline > multiline -embed2 = """I hope - ${ - " people ${'''don't -// ^^^^^^^ string.quoted.double.block.groovy source.groovy.embedded.source string.quoted.double.groovy -// ^^^^^ string.quoted.single.block.groovy - actually'''}" -// ^ string.quoted.double.block.groovy source.groovy.embedded.source string.quoted.double.groovy punctuation.section.interpolation.end.groovy - } -// ^ punctuation.section.interpolation.end.groovy - do this - """ -//^^^ string.quoted.double.block.groovy punctuation.definition.string.end.groovy - -embeddedInterpolation1 = "${"$yep"}" -// ^^^^ string.quoted.double.groovy source.groovy.embedded.source string.quoted.double.groovy variable.other.interpolated.groovy - -embeddedNonInterpolation = "${'$nope'}" -// ^^^^^ string.quoted.double.groovy source.groovy.embedded.source string.quoted.single.groovy - variable.other.interpolated.groovy - -dollarSlashy01 = $/Hello $person.name/$ -// ^^^^^^^ string.quoted.other.dollar-slashy.groovy variable.other.interpolated.groovy -// ^ punctuation.accessor.dot.groovy -// ^^^^ string.quoted.other.dollar-slashy.groovy variable.other.interpolated.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy02 = $/today is ${new Date().format( 'yyyy-MM-dd' )}./$ -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.groovy.embedded.source -// ^^ punctuation.section.interpolation.begin.groovy -// ^^^ keyword.operator.new.groovy -// ^^^^^^^^^^^^^^^^^^^^^^ meta.function-call -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy03 = $/$ dollar sign/$ -// ^^^^^^^^^^^^^ string.quoted.other.dollar-slashy.groovy - invalid.illegal -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy04 = $/$$ escaped dollar sign/$ -// ^^ string.quoted.other.dollar-slashy.groovy constant.character.escape.groovy - invalid.illegal - variable.other.interpolated.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy05 = $/\ backslash/$ -// ^^^^^^^^^^^ string.quoted.other.dollar-slashy.groovy - invalid.illegal - constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy06 = $// forward slash/$ -// ^^^^^^^^^^^^^^^ string.quoted.other.dollar-slashy.groovy - invalid.illegal - constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy07 = $/$/ escaped forward slash/$ -// ^^ string.quoted.other.dollar-slashy.groovy constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy08 = $/$$$/ escaped opening dollar slashy/$ -// ^^^^ string.quoted.other.dollar-slashy.groovy constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy09 = $/$/$$ escaped closing dollar slashy/$ -// ^^^^ string.quoted.other.dollar-slashy.groovy constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -dollarSlashy10 = $/${$$}/$ -// ^^ string.quoted.other.dollar-slashy.groovy source.groovy.embedded.source - constant.character.escape.groovy -// ^^ string.quoted.other.dollar-slashy.groovy punctuation.definition.string.end.groovy - -interpolatedSlashy = /a ${color} $obj$/ -// ^^^^^ string.regexp.groovy source.groovy.embedded.source -// ^^^^ string.regexp.groovy variable.other.interpolated.groovy -// ^ string.regexp.groovy - variable.other.interpolated.groovy diff --git a/Groovy/tests/syntax_test_jenkins.Jenkinsfile b/Groovy/tests/syntax_test_jenkins.Jenkinsfile deleted file mode 100644 index d77bedced8..0000000000 --- a/Groovy/tests/syntax_test_jenkins.Jenkinsfile +++ /dev/null @@ -1,116 +0,0 @@ -// SYNTAX TEST "Packages/Groovy/Groovy.sublime-syntax" -// <- comment.line.double-slash.groovy punctuation.definition.comment.groovy -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.double-slash.groovy - -pipeline { - agent { - docker { image 'node:20.17.0-alpine3.20' } - } - stages { - stage('Test') { - steps { - sh 'node --version' - } - } - } -} - -def call() { -// <- meta.definition.method.groovy keyword.declaration.function.groovy -//^ meta.definition.method.groovy keyword.declaration.function.groovy -// ^^^^ meta.definition.method.groovy entity.name.function.groovy -// ^ meta.definition.method.groovy punctuation.definition.parameters.begin.groovy -// ^ meta.definition.method.groovy punctuation.definition.parameters.end.groovy -// ^ meta.block.groovy punctuation.section.block.begin.groovy - sh '''#!/bin/bash -// ^^ meta.block.groovy support.function.groovy -// ^^^ meta.block.groovy meta.string.embedded-shell.groovy punctuation.definition.string.begin.groovy -// ^ meta.block.groovy meta.string.embedded-shell.groovy string.quoted.single.block.groovy source.shell.bash comment.line.number-sign.shell punctuation.definition.comment.shell - echo "hello ${world}" -// ^^^^ meta.block.groovy meta.string.embedded-shell.groovy string.quoted.single.block.groovy source.shell.bash meta.function-call.identifier.shell support.function.shell -// ^ meta.interpolation.parameter.shell punctuation.definition.variable.shell -// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.begin.shell -// ^^^^^ meta.interpolation.parameter.shell variable.other.readwrite.shell -// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.end.shell -// ^ - meta.interpolation - ''' -} -// <- meta.block.groovy punctuation.section.block.end.groovy - -@Library('somelib') _ -// <- meta.declaration.annotation.groovy storage.type.annotation.groovy -//^^^^^^ meta.declaration.annotation.groovy storage.type.annotation.groovy - -properties([ - parameters([ - booleanParam(name: 'SOME_PARAM', defaultValue: false, description: 'Example parameter'), - validatingString(name: 'COMMIT_HASH', defaultValue: '', regex: '^(?:[a-z0-9]{40})?$', failedValidationMessage: 'Commit must be valid if specified', description: 'Commit hash'), - ]), -]) - -// Project config -Map config = [ -// <- storage.type.class.groovy -// ^^^^^^ variable.other.readwrite.groovy -// ^ keyword.operator.assignment.groovy -// ^ meta.structure.groovy punctuation.definition.structure.begin.groovy - containerWorkDir: '/src', -// ^^^^^^^^^^^^^^^^ constant.other.key.groovy -// ^ punctuation.definition.separator.key-value.groovy -// ^^^^^^ string.quoted.single.groovy -// ^ punctuation.definition.separator.groovy - DEFAULT_BRANCH: 'master', -// ^^^^^^^^^^^^^^ constant.other.key.groovy -// ^ punctuation.definition.separator.key-value.groovy -] -// <- meta.structure.groovy punctuation.definition.structure.end.groovy -//^ - meta.structure -// Deployment decision variables -Boolean isPullRequest = (env.CHANGE_ID != null) -// ^^^^ storage.type.class.groovy -// ^^^^^^^^^^^^^ variable.other.readwrite.groovy -// ^ keyword.operator.assignment.groovy -// ^^^^^^^^^^^^^^^^^^^^^^^ meta.group.groovy -// ^ punctuation.section.group.begin.groovy -// ^^ keyword.operator.comparison.groovy -// ^^^^ constant.language.null.groovy -// ^ punctuation.section.group.end.groovy - -// Environment section -env.SOME_ENV_VAR = "refs/heads/${config.DEFAULT_BRANCH.toLowerCase()}" - -int something = sh(returnStdout: true, script: '''#!/bin/bash - set -eu - echo 7 - ''') -// TODO: highlight bash above - -node('some-node-name') { - try { - // <- meta.block.groovy keyword.control.exception.try.groovy - // ^ punctuation.section.block.begin.groovy - lock(lockName) { - - } - } catch (InterruptedException e) { - // <- punctuation.section.block.end.groovy - //^^^^^ keyword.control.exception.catch.groovy - // ^ punctuation.section.group.begin.groovy - // ^^^^^^^^^^^^^^^^^^^^ storage.type.class.groovy - // ^ variable.other.readwrite.groovy - // ^ punctuation.section.group.end.groovy - // ^ punctuation.section.block.begin.groovy - if (isDeployment) { - // <- meta.block.groovy meta.block.groovy keyword.control.conditional.if.groovy - // ^ meta.block.groovy meta.block.groovy meta.group.groovy punctuation.section.group.begin.groovy - // ^^^^^^^^^^^^ meta.block.groovy meta.block.groovy meta.group.groovy variable.other.readwrite.groovy - // ^ meta.block.groovy meta.block.groovy meta.group.groovy punctuation.section.group.end.groovy - // ^ meta.block.groovy meta.block.groovy meta.block.groovy punctuation.section.block.begin.groovy - notify.deployment(channel: config.jobStatusChannel, status: 'ABORTED', environment: params.CI_ENVIRONMENT) - } - throw e - // <- meta.block.groovy meta.block.groovy keyword.control.flow.throw.groovy - // ^ meta.block.groovy meta.block.groovy variable.other.readwrite.groovy - } - // <- meta.block.groovy meta.block.groovy punctuation.section.block.end.groovy -} diff --git a/Java/Default.sublime-keymap b/Java/Default.sublime-keymap index 92a4a90a52..6294a237d6 100644 --- a/Java/Default.sublime-keymap +++ b/Java/Default.sublime-keymap @@ -5,7 +5,7 @@ [ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "source.java - string", "match_all": true }, + { "key": "selector", "operator": "equal", "operand": "(source.java | source.groovy) - string", "match_all": true }, { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|,|:|;|\\+|$)", "match_all": true }, { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } @@ -18,10 +18,10 @@ [ { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, - { "key": "selector", "operator": "equal", "operand": "source.java - string", "match_all": true }, + { "key": "selector", "operator": "equal", "operand": "(source.java | source.groovy) - string", "match_all": true }, { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|,|:|;|\\+|$)", "match_all": true }, { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true } ] }, -] \ No newline at end of file +] diff --git a/Java/Groovy.sublime-syntax b/Java/Groovy.sublime-syntax new file mode 100644 index 0000000000..49e9a7ef17 --- /dev/null +++ b/Java/Groovy.sublime-syntax @@ -0,0 +1,470 @@ +%YAML 1.2 +--- +# https://docs.groovy-lang.org/latest/html/documentation/ +# https://groovy-lang.org/documentation.html +# https://www.sublimetext.com/docs/syntax.html + +name: Groovy +scope: source.groovy +version: 2 + +extends: Packages/Java/Java.sublime-syntax + +file_extensions: + - groovy + - gvy + - gradle + +hidden_file_extensions: + - Jenkinsfile + +first_line_match: |- + (?x: + ^ \#! .* {{shebang_language}} # shebang + | ^ \s* // .*? -\*- .*? \bgroovy\b .*? -\*- # editorconfig + ) + +###[ CONTEXTS ]################################################################ + +contexts: + + main: + - meta_include_prototype: false + - match: '' + push: [groovy, shebang] + +###[ GROOVY ]################################################################## + + groovy: + - include: java + +###[ COMMENTS ]################################################################ + + shebang: + - meta_include_prototype: false + - match: ^\s*(\#!) + captures: + 1: punctuation.definition.comment.groovy + set: shebang-body + - match: ^|(?=\S) # Note: Ensure to highlight shebang if Erlang is embedded. + pop: 1 + + shebang-body: + - meta_include_prototype: false + - meta_scope: comment.line.shebang.groovy + - match: '{{shebang_language}}' + scope: constant.language.shebang.groovy + - match: $\n? + pop: 1 + + # TODO: groovy doc + +###[ LITERALS / VARIABLES ]#################################################### + + literal-variables: + - meta_prepend: true + - match: \b(assertScript)\s+(\'{3}) # assertScript '''...''' + captures: + 1: support.function.groovy + 2: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.begin.groovy + meta.groovy.groovy + embed: scope:source.groovy + embed_scope: + meta.groovy.groovy + source.groovy.embedded.groovy + escape: \'{3} + escape_captures: + 0: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.end.groovy + meta.groovy.groovy + - match: \b(sh)\s+(\"{3}) # sh """...""" + captures: + 1: support.function.groovy + 2: + meta.string.groovy + string.quoted.double.block.groovy + punctuation.definition.string.begin.groovy + meta.shell.groovy + embed: scope:source.shell.bash + embed_scope: + meta.shell.groovy + source.shell.bash.embedded.groovy + escape: \"{3} + escape_captures: + 0: + meta.string.groovy + string.quoted.double.block.groovy + punctuation.definition.string.end.groovy + meta.shell.groovy + - match: \b(sh)\s+(\'{3}) # sh '''...''' + captures: + 1: support.function.groovy + 2: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.begin.groovy + meta.shell.groovy + embed: scope:source.shell.bash + embed_scope: + meta.shell.groovy + source.shell.bash.embedded.groovy + escape: \'{3} + escape_captures: + 0: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.end.groovy + meta.shell.groovy + - match: \b(sh)\s+(\') # sh '...' + captures: + 1: support.function.groovy + 2: + meta.string.groovy + string.quoted.single.groovy + punctuation.definition.string.begin.groovy + meta.shell.groovy + embed: scope:source.shell.bash + embed_scope: + meta.shell.groovy + source.shell.bash.embedded.groovy + escape: \' + escape_captures: + 0: + meta.string.groovy + string.quoted.single.groovy + punctuation.definition.string.end.groovy + meta.shell.groovy + +###[ LITERALS / STRINGS ]###################################################### + + literal-strings: + # https://docs.groovy-lang.org/latest/html/documentation/#all-strings + - include: literal-double-quoted-textblocks + - include: literal-double-quoted-strings + - include: literal-single-quoted-textblocks + - include: literal-single-quoted-strings + - include: dollar-slashy-strings + - include: slashy-regexp-strings + + literal-double-quoted-textblocks: + - match: \"{3} + scope: punctuation.definition.string.begin.groovy + push: literal-double-quoted-textblock-body + + literal-double-quoted-textblock-body: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.quoted.double.block.groovy + - match: \"{3} + scope: punctuation.definition.string.end.groovy + pop: 1 + - include: literal-string-escapes + - include: string-interpolations-single-dollar + - include: string-interpolations-multiline + - include: illegal-interpolations + - include: merge-conflict-markers + + literal-double-quoted-strings: + - match: \" + scope: punctuation.definition.string.begin.groovy + push: literal-double-quoted-string-body + + literal-double-quoted-string-body: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.quoted.double.groovy + - match: \" + scope: punctuation.definition.string.end.groovy + pop: 1 + - include: illegal-newline + - include: literal-string-escapes + - include: string-interpolations-single-dollar + - include: string-interpolations + - include: illegal-interpolations + + literal-single-quoted-textblocks: + - match: \'{3}(?=#!/bin/bash) + captures: + 0: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.begin.groovy + meta.shell.groovy + embed: scope:source.shell.bash + embed_scope: + meta.shell.groovy + source.shell.bash.embedded.groovy + escape: \'{3} + escape_captures: + 0: + meta.string.groovy + string.quoted.single.block.groovy + punctuation.definition.string.end.groovy + meta.shell.groovy + - match: \'{3} + scope: punctuation.definition.string.begin.groovy + push: literal-single-quoted-textblock-body + + literal-single-quoted-textblock-body: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.quoted.single.block.groovy + - match: \'{3} + scope: punctuation.definition.string.end.groovy + pop: 1 + - include: literal-string-escapes + - include: merge-conflict-markers + + literal-single-quoted-strings: + - match: \' + scope: punctuation.definition.string.begin.groovy + push: literal-single-quoted-string-body + + literal-single-quoted-string-body: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.quoted.single.groovy + - match: \' + scope: punctuation.definition.string.end.groovy + pop: 1 + - include: illegal-newline + - include: literal-string-escapes + + dollar-slashy-strings: + # https://docs.groovy-lang.org/latest/html/documentation/#_dollar_slashy_string + + - match: '\$/' + scope: punctuation.definition.string.begin.groovy + push: dollar-slashy-string-body + + dollar-slashy-string-body: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.other.dollar-slashy.block.groovy + - match: '/\$' + scope: punctuation.definition.string.end.groovy + pop: 1 + - match: '\$/|\$\$' + scope: constant.character.escape.groovy + - include: literal-string-escape-eol + - match: '{{escape_unicode}}' + scope: constant.character.escape.unicode.java + - include: string-interpolations-single-dollar + - include: string-interpolations-multiline + - include: merge-conflict-markers + + slashy-regexp-strings: + # https://docs.groovy-lang.org/latest/html/documentation/#_slashy_string + # FIXME: find a better way to distinguish operators / and /= vs slashy strings + - match: '/(?=[^/= ])' + scope: punctuation.definition.string.begin.groovy + push: + - slashy-regexp-string-meta + - slashy-regexp-string-body + + slashy-regexp-string-meta: + - meta_include_prototype: false + - meta_scope: meta.string.groovy string.regexp.groovy + - match: '/' + scope: punctuation.definition.string.end.groovy + pop: 1 + + slashy-regexp-string-body: + - meta_include_prototype: false + - include: scope:source.regexp.groovy + - include: merge-conflict-markers + - include: immediately-pop + +###[ LITERALS / STRING ESCAPES ]############################################### + + literal-string-escapes: + - match: '{{escape_unicode}}' + scope: constant.character.escape.unicode.java + - include: literal-string-escape-eol + - match: '{{escape_other}}' + scope: constant.character.escape.other.java + + literal-string-escape-eol: + - match: \\\n + scope: constant.character.escape.groovy + +###[ LITERALS / STRING INTERPOLTATIONS ]####################################### + + string-interpolations-multiline: + - match: '\$\{' + scope: punctuation.section.interpolation.begin.groovy + push: string-interpolation-multiline-body + + string-interpolation-multiline-body: + - meta_include_prototype: false + - meta_scope: source.groovy.embedded.groovy + - match: '\}' + scope: punctuation.section.interpolation.end.groovy + pop: 1 + - include: literal-string-escape-eol + - include: groovy + + string-interpolations: + - match: '\$\{' + scope: punctuation.section.interpolation.begin.groovy + push: string-interpolation-body + + string-interpolation-body: + - meta_include_prototype: false + - meta_scope: source.groovy.embedded.groovy + - match: '\}' + scope: punctuation.section.interpolation.end.groovy + pop: 1 + - include: literal-string-escape-eol + # NOTE: not consuming the newline here, so that the outer scope handles it + # and pops correctly + - match: (?=\n) + pop: 1 + - include: groovy + + string-interpolations-single-dollar: + - match: \${{single_dollar_interpolation_identifier}} + scope: variable.other.interpolated.groovy + push: string-interpolation-single-dollar-body + + string-interpolation-single-dollar-body: + - meta_include_prototype: false + - match: \.(?={{single_dollar_interpolation_identifier}}) + scope: punctuation.accessor.dot.groovy + - match: '{{single_dollar_interpolation_identifier}}' + scope: variable.other.interpolated.groovy + - match: \b + pop: 1 + +###[ OPERATORS ]############################################################### + + operators: + - include: word-operators + - include: range-operators + + # FIXME: sregex-compatibility, see https://github.com/sublimehq/Packages/issues/481 + + - match: '\->' + scope: keyword.operator.arrow.groovy + - match: (?<=\S)\.(?=\S) + scope: punctuation.accessor.dot.groovy + - match: (?<=\S)\?\.(?=\S) + scope: punctuation.accessor.null-coalescing.groovy + + - include: match-and-find-operators + - include: spaceship-and-diamond-operators + + - include: assignment-augmented-bitwise-shift-operators + - include: bitwise-shift-operators + - include: relational-operators + - include: assignment-augmented-operators + - include: arithmetic-operators + - include: logical-operators + - include: bitwise-operators + - include: comparison-operators + - include: assignment-operators + - include: elvis-and-ternary-operators + + word-operators: + - match: \bas\b + scope: keyword.operator.coercion.groovy + - match: (?:!|\b)in\b + scope: keyword.operator.membership.groovy + - match: (?:!|\b)instanceof\b + scope: keyword.operator.instanceof.groovy + + range-operators: + - match: '<\.\.>' + scope: keyword.operator.range.exclusive.both.groovy + - match: '<\.\.' + scope: keyword.operator.range.exclusive.lower.groovy + - match: '\.\.>' + scope: keyword.operator.range.exclusive.upper.groovy + - match: '\.\.' + scope: keyword.operator.range.inclusive.groovy + + match-and-find-operators: + - match: '==~' + scope: keyword.operator.match.groovy + - match: '=~' + scope: keyword.operator.find.groovy + + spaceship-and-diamond-operators: + - match: '<=>' + scope: keyword.operator.comparison.groovy + - match: '<>' + scope: keyword.operator.comparison.groovy + + assignment-augmented-operators: + - meta_prepend: true + - match: '\*\*=' + scope: keyword.operator.assignment.augmented.power.groovy + + arithmetic-operators: + - meta_prepend: true + - match: '\*\*' + scope: keyword.operator.arithmetic.power.groovy + + comparison-operators: + - meta_prepend: true + - match: '===' + scope: keyword.operator.comparison.equal.value.strict.groovy + - match: '!==' + scope: keyword.operator.comparison.not-equal.value.strict.groovy + + elvis-and-ternary-operators: + # https://docs.groovy-lang.org/latest/html/documentation/#_elvis_operator + - match: '\?\:' + scope: keyword.operator.elvis.groovy + + - include: ternary-operators + +###[ TYPE IMPORT ]############################################################# + + type-import-package: + # https://docs.groovy-lang.org/latest/html/documentation/#_default_imports + - meta_prepend: true + - match: 'java\.math\.Big(?:Decimal|Integer){{break}}' + scope: invalid.illegal.import-of-default-import.groovy + pop: 1 + - match: 'java\.(?:io|lang|net|util)(?:{{break}}|(?:\.{{lowercase_id}})*)' + scope: invalid.illegal.import-of-default-import.groovy + pop: 1 + - match: 'groovy\.(?:lang|util)(?:{{break}}|(?:\.{{lowercase_id}})*)' + scope: invalid.illegal.import-of-default-import.groovy + pop: 1 + +###[ ILLEGALS ]################################################################ + + illegal-interpolations: + - match: \$(?=") + scope: invalid.illegal.stray-dollar-sign.groovy + - match: \$[^"]+ + scope: invalid.illegal.malformatted-interpolation.groovy + +###[ VARIABLES ]############################################################### + +variables: + shebang_language: \b(?:groovy)\b + + float_suffix: '[dDfFgGiIlL]{{break}}' + int_suffix: '[dDfFgGiIlL]{{break}}' + + escape_other: \\[btnfr"'\\\$] + + single_dollar_id_char: |- + (?xi: + # Valid unicode letters according to: + # http://groovy-lang.org/syntax.html#_normal_identifiers + # Literal Unicode Escaped Unicode + [\x{00C0}-\x{00D6}] | \\u00C[0-9A-F] | \\u00D[0-6] + | [\x{00D8}-\x{00F6}] | \\u00D[89A-F] | \\u00E[0-9A-F] | \\u00F[0-6] + | [\x{00F8}-\x{00FF}] | \\u00F[89A-F] + | [\x{0100}-\x{FFFE}] | \\u0[1-9A-F][0-9A-F]{2} | \\u(?!FFFF)[1-9A-F][0-9A-F]{3} + ) + + # dollars aren't allowed in the single dollar interpolated identifiers + # (dotted expressions), but they are supposed to be valid characters + # in identifiers in other contexts + # e.g. `"$$a"` is invalid, but `"${$a}"` is fine. + single_dollar_interpolation_identifier: (?:{{single_dollar_id_char}}|[[:alpha:]_])(?:{{single_dollar_id_char}}|[[:alnum:]_])* diff --git a/Java/Groovy/Ant.sublime-build b/Java/Groovy/Ant.sublime-build new file mode 100644 index 0000000000..8908120bb8 --- /dev/null +++ b/Java/Groovy/Ant.sublime-build @@ -0,0 +1,12 @@ +{ + "cmd": ["ant"], + "file_regex": "^ *\\[groovyc\\] (.+):([0-9]+):() (.*)$", + "working_dir": "${project_path:${folder}}", + "selector": "source.groovy", + "keyfiles": ["build.xml"], + + "windows": + { + "cmd": ["ant.bat"] + } +} diff --git a/Groovy/Comments.tmPreferences b/Java/Groovy/Comments.tmPreferences similarity index 100% rename from Groovy/Comments.tmPreferences rename to Java/Groovy/Comments.tmPreferences diff --git a/Java/Groovy/Completion Rules.tmPreferences b/Java/Groovy/Completion Rules.tmPreferences new file mode 100644 index 0000000000..9d173c6128 --- /dev/null +++ b/Java/Groovy/Completion Rules.tmPreferences @@ -0,0 +1,15 @@ + + + + scope + source.groovy + settings + + cancelCompletion + + + + diff --git a/Java/Groovy/Embeddings/RegExp (Groovy).sublime-syntax b/Java/Groovy/Embeddings/RegExp (Groovy).sublime-syntax new file mode 100644 index 0000000000..8efbcfea8e --- /dev/null +++ b/Java/Groovy/Embeddings/RegExp (Groovy).sublime-syntax @@ -0,0 +1,79 @@ +%YAML 1.2 +--- +name: Regular Expression (Groovy) +scope: source.regexp.groovy +version: 2 +hidden: true + +extends: 'Packages/Regular Expressions/RegExp.sublime-syntax' + +###[ CONTEXTS ]################################################################ + +contexts: + + prototype: + - meta_prepend: true + - include: groovy-interpolations + + main: + - include: groovy-regexp-end-or-interpolation + - include: main-extended + +###[ OVERRIDES OVER BASE SYNTAX ]############################################## + + base-literal: + - meta_prepend: true + - include: groovy-regexp-end-or-interpolation + + base-literal-extended: + - meta_prepend: true + - include: groovy-regexp-end-or-interpolation + + escaped-chars: + - match: \\(?:[/\n]|u\h{4}) + scope: constant.character.escape.groovy + + escaped-char: + - match: \\(?:[/\n]|u\h{4}) + scope: constant.character.escape.groovy + pop: 1 + +###[ GROOVY ]################################################################## + + groovy-regexp-end-or-interpolation: + - match: (?=/) + pop: 1 + + - include: Packages/Java/Groovy.sublime-syntax#string-interpolations-single-dollar + +###[ PROTOTYPE / INTERPOLATIONS ]############################################## + + groovy-interpolations: + - match: '\$\{' + scope: punctuation.section.interpolation.begin.groovy + push: + - groovy-interpolations-meta + - groovy-interpolations-body + + groovy-interpolations-meta: + - clear_scopes: 1 + - meta_scope: meta.interpolation.groovy + + - match: '\}' + scope: punctuation.section.interpolation.end.groovy + pop: 1 + + - include: Packages/Java/Groovy.sublime-syntax#literal-string-escape-eol + + # newlines are invalid inside the interpolation + # but outside of a nested multiline string + - match: '\n' + scope: invalid.illegal.newline.groovy + pop: 1 + + groovy-interpolations-body: + - include: Packages/Java/Groovy.sublime-syntax#java + + # immediately-pop + - match: '' + pop: 1 diff --git a/Java/Groovy/Fold.tmPreferences b/Java/Groovy/Fold.tmPreferences new file mode 100644 index 0000000000..86c07bd824 --- /dev/null +++ b/Java/Groovy/Fold.tmPreferences @@ -0,0 +1,63 @@ + + + + scope + source.groovy + settings + + foldScopes + + + begin + punctuation.definition.comment.begin + end + punctuation.definition.comment.end + + + begin + punctuation.definition.string.begin + end + punctuation.definition.string.end + + + begin + punctuation.section.interpolation.begin + end + punctuation.section.interpolation.end + + + begin + punctuation.definition.generic.begin + end + punctuation.definition.generic.end + + + begin + punctuation.section.block.begin + end + punctuation.section.block.end + + + begin + punctuation.section.braces.begin + end + punctuation.section.braces.end + + + begin + punctuation.section.brackets.begin + end + punctuation.section.brackets.end + + + begin + punctuation.section.group.begin + end + punctuation.section.group.end + + + indentationFoldingEnabled + + + + diff --git a/Java/Groovy/GroovyC.sublime-build b/Java/Groovy/GroovyC.sublime-build new file mode 100644 index 0000000000..583f9666eb --- /dev/null +++ b/Java/Groovy/GroovyC.sublime-build @@ -0,0 +1,5 @@ +{ + "shell_cmd": "groovyc \"$file\"", + "file_regex": "^(...*?):([0-9]*):?([0-9]*)", + "selector": "source.groovy" +} diff --git a/Java/Groovy/Indentation Rules (Comments).tmPreferences b/Java/Groovy/Indentation Rules (Comments).tmPreferences new file mode 100644 index 0000000000..2cfe39f2bd --- /dev/null +++ b/Java/Groovy/Indentation Rules (Comments).tmPreferences @@ -0,0 +1,27 @@ + + + + scope + source.groovy comment.block + settings + + + preserveIndent + + unIndentedLinePattern + . + + + diff --git a/Java/Groovy/Indentation Rules.tmPreferences b/Java/Groovy/Indentation Rules.tmPreferences new file mode 100644 index 0000000000..b389c26df4 --- /dev/null +++ b/Java/Groovy/Indentation Rules.tmPreferences @@ -0,0 +1,83 @@ + + + + scope + source.groovy + settings + + decreaseIndentPattern + + increaseIndentPattern + + bracketIndentNextLinePattern + (?: \s* (? /\*.*\*/ ) )* \s* ) + (?: + # indent after: + # - `else` + else + # indent after: + # - `else if (...)` + # - `if (...)` + # - `for (...)` + # - `while (...)` + | (?: (?: else \g )? if | for | while ) + # followed by whitespace or block comments [optional] + \g + # top-level balanced parentheses + (? + \( (?: + # nested balanced parentheses + \g + # double quoted string with ignored escaped quotation marks + | \".*(? + # anything but closing parenthesis + | [^)] + )* \) + ) + ) + # followed by whitespace or block comments [optional] + \g + # followed by line comment [optional] + (?: //.* )? $ + ]]> + preserveIndent + + unIndentedLinePattern + + + + diff --git a/Groovy/Snippets/#!-usr-local-bin-groovy-w.sublime-snippet b/Java/Groovy/Snippets/#!-usr-local-bin-groovy-w.sublime-snippet similarity index 100% rename from Groovy/Snippets/#!-usr-local-bin-groovy-w.sublime-snippet rename to Java/Groovy/Snippets/#!-usr-local-bin-groovy-w.sublime-snippet diff --git a/Groovy/Snippets/Ant-__-replace.sublime-snippet b/Java/Groovy/Snippets/Ant-__-replace.sublime-snippet similarity index 100% rename from Groovy/Snippets/Ant-__-replace.sublime-snippet rename to Java/Groovy/Snippets/Ant-__-replace.sublime-snippet diff --git a/Groovy/Snippets/Block-Comment.sublime-snippet b/Java/Groovy/Snippets/Block-Comment.sublime-snippet similarity index 100% rename from Groovy/Snippets/Block-Comment.sublime-snippet rename to Java/Groovy/Snippets/Block-Comment.sublime-snippet diff --git a/Groovy/Snippets/Constructor.sublime-snippet b/Java/Groovy/Snippets/Constructor.sublime-snippet similarity index 100% rename from Groovy/Snippets/Constructor.sublime-snippet rename to Java/Groovy/Snippets/Constructor.sublime-snippet diff --git a/Groovy/Snippets/Hash-Pair.sublime-snippet b/Java/Groovy/Snippets/Hash-Pair.sublime-snippet similarity index 100% rename from Groovy/Snippets/Hash-Pair.sublime-snippet rename to Java/Groovy/Snippets/Hash-Pair.sublime-snippet diff --git a/Groovy/Snippets/Thread_start-{-__-}.sublime-snippet b/Java/Groovy/Snippets/Thread_start-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/Thread_start-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/Thread_start-{-__-}.sublime-snippet diff --git a/Groovy/Snippets/Thread_startDaemon-{-__-}.sublime-snippet b/Java/Groovy/Snippets/Thread_startDaemon-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/Thread_startDaemon-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/Thread_startDaemon-{-__-}.sublime-snippet diff --git a/Groovy/Snippets/all{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/all{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/all{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/all{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/any{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/any{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/any{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/any{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/as-BigDecimal.sublime-snippet b/Java/Groovy/Snippets/as-BigDecimal.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-BigDecimal.sublime-snippet rename to Java/Groovy/Snippets/as-BigDecimal.sublime-snippet diff --git a/Groovy/Snippets/as-BigInteger.sublime-snippet b/Java/Groovy/Snippets/as-BigInteger.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-BigInteger.sublime-snippet rename to Java/Groovy/Snippets/as-BigInteger.sublime-snippet diff --git a/Groovy/Snippets/as-Double.sublime-snippet b/Java/Groovy/Snippets/as-Double.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Double.sublime-snippet rename to Java/Groovy/Snippets/as-Double.sublime-snippet diff --git a/Groovy/Snippets/as-Float.sublime-snippet b/Java/Groovy/Snippets/as-Float.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Float.sublime-snippet rename to Java/Groovy/Snippets/as-Float.sublime-snippet diff --git a/Groovy/Snippets/as-Immutable.sublime-snippet b/Java/Groovy/Snippets/as-Immutable.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Immutable.sublime-snippet rename to Java/Groovy/Snippets/as-Immutable.sublime-snippet diff --git a/Groovy/Snippets/as-Set.sublime-snippet b/Java/Groovy/Snippets/as-Set.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Set.sublime-snippet rename to Java/Groovy/Snippets/as-Set.sublime-snippet diff --git a/Groovy/Snippets/as-String.sublime-snippet b/Java/Groovy/Snippets/as-String.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-String.sublime-snippet rename to Java/Groovy/Snippets/as-String.sublime-snippet diff --git a/Groovy/Snippets/as-Synchronized.sublime-snippet b/Java/Groovy/Snippets/as-Synchronized.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Synchronized.sublime-snippet rename to Java/Groovy/Snippets/as-Synchronized.sublime-snippet diff --git a/Groovy/Snippets/as-Writable.sublime-snippet b/Java/Groovy/Snippets/as-Writable.sublime-snippet similarity index 100% rename from Groovy/Snippets/as-Writable.sublime-snippet rename to Java/Groovy/Snippets/as-Writable.sublime-snippet diff --git a/Groovy/Snippets/assert(__).sublime-snippet b/Java/Groovy/Snippets/assert(__).sublime-snippet similarity index 100% rename from Groovy/Snippets/assert(__).sublime-snippet rename to Java/Groovy/Snippets/assert(__).sublime-snippet diff --git a/Groovy/Snippets/assertEquals(__).sublime-snippet b/Java/Groovy/Snippets/assertEquals(__).sublime-snippet similarity index 100% rename from Groovy/Snippets/assertEquals(__).sublime-snippet rename to Java/Groovy/Snippets/assertEquals(__).sublime-snippet diff --git a/Groovy/Snippets/assertFalse.sublime-snippet b/Java/Groovy/Snippets/assertFalse.sublime-snippet similarity index 100% rename from Groovy/Snippets/assertFalse.sublime-snippet rename to Java/Groovy/Snippets/assertFalse.sublime-snippet diff --git a/Groovy/Snippets/assertNotEquals(__).sublime-snippet b/Java/Groovy/Snippets/assertNotEquals(__).sublime-snippet similarity index 100% rename from Groovy/Snippets/assertNotEquals(__).sublime-snippet rename to Java/Groovy/Snippets/assertNotEquals(__).sublime-snippet diff --git a/Groovy/Snippets/assertNotNull(__).sublime-snippet b/Java/Groovy/Snippets/assertNotNull(__).sublime-snippet similarity index 100% rename from Groovy/Snippets/assertNotNull(__).sublime-snippet rename to Java/Groovy/Snippets/assertNotNull(__).sublime-snippet diff --git a/Groovy/Snippets/assertNull(__).sublime-snippet b/Java/Groovy/Snippets/assertNull(__).sublime-snippet similarity index 100% rename from Groovy/Snippets/assertNull(__).sublime-snippet rename to Java/Groovy/Snippets/assertNull(__).sublime-snippet diff --git a/Groovy/Snippets/assertSame.sublime-snippet b/Java/Groovy/Snippets/assertSame.sublime-snippet similarity index 100% rename from Groovy/Snippets/assertSame.sublime-snippet rename to Java/Groovy/Snippets/assertSame.sublime-snippet diff --git a/Groovy/Snippets/assertTrue.sublime-snippet b/Java/Groovy/Snippets/assertTrue.sublime-snippet similarity index 100% rename from Groovy/Snippets/assertTrue.sublime-snippet rename to Java/Groovy/Snippets/assertTrue.sublime-snippet diff --git a/Groovy/Snippets/case.sublime-snippet b/Java/Groovy/Snippets/case.sublime-snippet similarity index 100% rename from Groovy/Snippets/case.sublime-snippet rename to Java/Groovy/Snippets/case.sublime-snippet diff --git a/Groovy/Snippets/class-__-singleton.sublime-snippet b/Java/Groovy/Snippets/class-__-singleton.sublime-snippet similarity index 100% rename from Groovy/Snippets/class-__-singleton.sublime-snippet rename to Java/Groovy/Snippets/class-__-singleton.sublime-snippet diff --git a/Groovy/Snippets/class-__.sublime-snippet b/Java/Groovy/Snippets/class-__.sublime-snippet similarity index 100% rename from Groovy/Snippets/class-__.sublime-snippet rename to Java/Groovy/Snippets/class-__.sublime-snippet diff --git a/Groovy/Snippets/class-___-TestCase.sublime-snippet b/Java/Groovy/Snippets/class-___-TestCase.sublime-snippet similarity index 100% rename from Groovy/Snippets/class-___-TestCase.sublime-snippet rename to Java/Groovy/Snippets/class-___-TestCase.sublime-snippet diff --git a/Groovy/Snippets/collect-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/collect-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/collect-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/collect-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/copy__-file.sublime-snippet b/Java/Groovy/Snippets/copy__-file.sublime-snippet similarity index 100% rename from Groovy/Snippets/copy__-file.sublime-snippet rename to Java/Groovy/Snippets/copy__-file.sublime-snippet diff --git a/Groovy/Snippets/copy__-fileset-include-exclude.sublime-snippet b/Java/Groovy/Snippets/copy__-fileset-include-exclude.sublime-snippet similarity index 100% rename from Groovy/Snippets/copy__-fileset-include-exclude.sublime-snippet rename to Java/Groovy/Snippets/copy__-fileset-include-exclude.sublime-snippet diff --git a/Groovy/Snippets/copy__-fileset.sublime-snippet b/Java/Groovy/Snippets/copy__-fileset.sublime-snippet similarity index 100% rename from Groovy/Snippets/copy__-fileset.sublime-snippet rename to Java/Groovy/Snippets/copy__-fileset.sublime-snippet diff --git a/Groovy/Snippets/def-__-closure-=-{__}.sublime-snippet b/Java/Groovy/Snippets/def-__-closure-=-{__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/def-__-closure-=-{__}.sublime-snippet rename to Java/Groovy/Snippets/def-__-closure-=-{__}.sublime-snippet diff --git a/Groovy/Snippets/def-__-method()-{__}.sublime-snippet b/Java/Groovy/Snippets/def-__-method()-{__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/def-__-method()-{__}.sublime-snippet rename to Java/Groovy/Snippets/def-__-method()-{__}.sublime-snippet diff --git a/Groovy/Snippets/downto(num)-{-n-__-}.sublime-snippet b/Java/Groovy/Snippets/downto(num)-{-n-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/downto(num)-{-n-__-}.sublime-snippet rename to Java/Groovy/Snippets/downto(num)-{-n-__-}.sublime-snippet diff --git a/Groovy/Snippets/each-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/each-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/each-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/each-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachByte-{-byte-__-}.sublime-snippet b/Java/Groovy/Snippets/eachByte-{-byte-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachByte-{-byte-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachByte-{-byte-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachDir-{-dir-__-}.sublime-snippet b/Java/Groovy/Snippets/eachDir-{-dir-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachDir-{-dir-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachDir-{-dir-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachDirMatch.sublime-snippet b/Java/Groovy/Snippets/eachDirMatch.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachDirMatch.sublime-snippet rename to Java/Groovy/Snippets/eachDirMatch.sublime-snippet diff --git a/Groovy/Snippets/eachDirRecurse.sublime-snippet b/Java/Groovy/Snippets/eachDirRecurse.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachDirRecurse.sublime-snippet rename to Java/Groovy/Snippets/eachDirRecurse.sublime-snippet diff --git a/Groovy/Snippets/eachFile-{-file-__-}.sublime-snippet b/Java/Groovy/Snippets/eachFile-{-file-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachFile-{-file-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachFile-{-file-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachFileMatch-{-file-__-}.sublime-snippet b/Java/Groovy/Snippets/eachFileMatch-{-file-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachFileMatch-{-file-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachFileMatch-{-file-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachFileRecurse-{-file-__-}.sublime-snippet b/Java/Groovy/Snippets/eachFileRecurse-{-file-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachFileRecurse-{-file-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachFileRecurse-{-file-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachKey-{-key-__-}.sublime-snippet b/Java/Groovy/Snippets/eachKey-{-key-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachKey-{-key-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachKey-{-key-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachLine-{-line-__-}.sublime-snippet b/Java/Groovy/Snippets/eachLine-{-line-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachLine-{-line-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachLine-{-line-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachMatch(regex)-{-match-__-}.sublime-snippet b/Java/Groovy/Snippets/eachMatch(regex)-{-match-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachMatch(regex)-{-match-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachMatch(regex)-{-match-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachObject-{-obj-__-}.sublime-snippet b/Java/Groovy/Snippets/eachObject-{-obj-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachObject-{-obj-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachObject-{-obj-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachValue-{-val-__-}.sublime-snippet b/Java/Groovy/Snippets/eachValue-{-val-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachValue-{-val-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachValue-{-val-__-}.sublime-snippet diff --git a/Groovy/Snippets/eachWithIndex-{-e-i-__-}.sublime-snippet b/Java/Groovy/Snippets/eachWithIndex-{-e-i-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/eachWithIndex-{-e-i-__-}.sublime-snippet rename to Java/Groovy/Snippets/eachWithIndex-{-e-i-__-}.sublime-snippet diff --git a/Groovy/Snippets/else.sublime-snippet b/Java/Groovy/Snippets/else.sublime-snippet similarity index 100% rename from Groovy/Snippets/else.sublime-snippet rename to Java/Groovy/Snippets/else.sublime-snippet diff --git a/Groovy/Snippets/elseif-___.sublime-snippet b/Java/Groovy/Snippets/elseif-___.sublime-snippet similarity index 100% rename from Groovy/Snippets/elseif-___.sublime-snippet rename to Java/Groovy/Snippets/elseif-___.sublime-snippet diff --git a/Groovy/Snippets/every-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/every-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/every-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/every-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/final-method.sublime-snippet b/Java/Groovy/Snippets/final-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/final-method.sublime-snippet rename to Java/Groovy/Snippets/final-method.sublime-snippet diff --git a/Groovy/Snippets/final-var.sublime-snippet b/Java/Groovy/Snippets/final-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/final-var.sublime-snippet rename to Java/Groovy/Snippets/final-var.sublime-snippet diff --git a/Groovy/Snippets/find-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/find-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/find-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/find-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/findAll-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/findAll-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/findAll-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/findAll-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/for-in.sublime-snippet b/Java/Groovy/Snippets/for-in.sublime-snippet similarity index 100% rename from Groovy/Snippets/for-in.sublime-snippet rename to Java/Groovy/Snippets/for-in.sublime-snippet diff --git a/Groovy/Snippets/grep(-pattern-)-{-match-__-}.sublime-snippet b/Java/Groovy/Snippets/grep(-pattern-)-{-match-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/grep(-pattern-)-{-match-__-}.sublime-snippet rename to Java/Groovy/Snippets/grep(-pattern-)-{-match-__-}.sublime-snippet diff --git a/Groovy/Snippets/if-else.sublime-snippet b/Java/Groovy/Snippets/if-else.sublime-snippet similarity index 100% rename from Groovy/Snippets/if-else.sublime-snippet rename to Java/Groovy/Snippets/if-else.sublime-snippet diff --git a/Groovy/Snippets/if.sublime-snippet b/Java/Groovy/Snippets/if.sublime-snippet similarity index 100% rename from Groovy/Snippets/if.sublime-snippet rename to Java/Groovy/Snippets/if.sublime-snippet diff --git a/Groovy/Snippets/import.sublime-snippet b/Java/Groovy/Snippets/import.sublime-snippet similarity index 100% rename from Groovy/Snippets/import.sublime-snippet rename to Java/Groovy/Snippets/import.sublime-snippet diff --git a/Groovy/Snippets/mkdir.sublime-snippet b/Java/Groovy/Snippets/mkdir.sublime-snippet similarity index 100% rename from Groovy/Snippets/mkdir.sublime-snippet rename to Java/Groovy/Snippets/mkdir.sublime-snippet diff --git a/Groovy/Snippets/new-File(__)_eachLine-{-__-}.sublime-snippet b/Java/Groovy/Snippets/new-File(__)_eachLine-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/new-File(__)_eachLine-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/new-File(__)_eachLine-{-__-}.sublime-snippet diff --git a/Groovy/Snippets/package.sublime-snippet b/Java/Groovy/Snippets/package.sublime-snippet similarity index 100% rename from Groovy/Snippets/package.sublime-snippet rename to Java/Groovy/Snippets/package.sublime-snippet diff --git a/Groovy/Snippets/print.sublime-snippet b/Java/Groovy/Snippets/print.sublime-snippet similarity index 100% rename from Groovy/Snippets/print.sublime-snippet rename to Java/Groovy/Snippets/print.sublime-snippet diff --git a/Groovy/Snippets/println.sublime-snippet b/Java/Groovy/Snippets/println.sublime-snippet similarity index 100% rename from Groovy/Snippets/println.sublime-snippet rename to Java/Groovy/Snippets/println.sublime-snippet diff --git a/Groovy/Snippets/private-final-method.sublime-snippet b/Java/Groovy/Snippets/private-final-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-final-method.sublime-snippet rename to Java/Groovy/Snippets/private-final-method.sublime-snippet diff --git a/Groovy/Snippets/private-final-var.sublime-snippet b/Java/Groovy/Snippets/private-final-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-final-var.sublime-snippet rename to Java/Groovy/Snippets/private-final-var.sublime-snippet diff --git a/Groovy/Snippets/private-method.sublime-snippet b/Java/Groovy/Snippets/private-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-method.sublime-snippet rename to Java/Groovy/Snippets/private-method.sublime-snippet diff --git a/Groovy/Snippets/private-static-final-String.sublime-snippet b/Java/Groovy/Snippets/private-static-final-String.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-static-final-String.sublime-snippet rename to Java/Groovy/Snippets/private-static-final-String.sublime-snippet diff --git a/Groovy/Snippets/private-static-final-method.sublime-snippet b/Java/Groovy/Snippets/private-static-final-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-static-final-method.sublime-snippet rename to Java/Groovy/Snippets/private-static-final-method.sublime-snippet diff --git a/Groovy/Snippets/private-static-method.sublime-snippet b/Java/Groovy/Snippets/private-static-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-static-method.sublime-snippet rename to Java/Groovy/Snippets/private-static-method.sublime-snippet diff --git a/Groovy/Snippets/private-static-var.sublime-snippet b/Java/Groovy/Snippets/private-static-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-static-var.sublime-snippet rename to Java/Groovy/Snippets/private-static-var.sublime-snippet diff --git a/Groovy/Snippets/private-var.sublime-snippet b/Java/Groovy/Snippets/private-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/private-var.sublime-snippet rename to Java/Groovy/Snippets/private-var.sublime-snippet diff --git a/Groovy/Snippets/replaceAll(regex)-{-match-__}.sublime-snippet b/Java/Groovy/Snippets/replaceAll(regex)-{-match-__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/replaceAll(regex)-{-match-__}.sublime-snippet rename to Java/Groovy/Snippets/replaceAll(regex)-{-match-__}.sublime-snippet diff --git a/Groovy/Snippets/reverseEach-{-e-__-}.sublime-snippet b/Java/Groovy/Snippets/reverseEach-{-e-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/reverseEach-{-e-__-}.sublime-snippet rename to Java/Groovy/Snippets/reverseEach-{-e-__-}.sublime-snippet diff --git a/Groovy/Snippets/run-after.sublime-snippet b/Java/Groovy/Snippets/run-after.sublime-snippet similarity index 100% rename from Groovy/Snippets/run-after.sublime-snippet rename to Java/Groovy/Snippets/run-after.sublime-snippet diff --git a/Groovy/Snippets/setUp().sublime-snippet b/Java/Groovy/Snippets/setUp().sublime-snippet similarity index 100% rename from Groovy/Snippets/setUp().sublime-snippet rename to Java/Groovy/Snippets/setUp().sublime-snippet diff --git a/Groovy/Snippets/shouldFail(__)-{-__-}.sublime-snippet b/Java/Groovy/Snippets/shouldFail(__)-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/shouldFail(__)-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/shouldFail(__)-{-__-}.sublime-snippet diff --git a/Groovy/Snippets/sleep(secs)-{-__-on-interrupt-}.sublime-snippet b/Java/Groovy/Snippets/sleep(secs)-{-__-on-interrupt-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/sleep(secs)-{-__-on-interrupt-}.sublime-snippet rename to Java/Groovy/Snippets/sleep(secs)-{-__-on-interrupt-}.sublime-snippet diff --git a/Groovy/Snippets/sleep(secs).sublime-snippet b/Java/Groovy/Snippets/sleep(secs).sublime-snippet similarity index 100% rename from Groovy/Snippets/sleep(secs).sublime-snippet rename to Java/Groovy/Snippets/sleep(secs).sublime-snippet diff --git a/Groovy/Snippets/sort-{-__-}.sublime-snippet b/Java/Groovy/Snippets/sort-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/sort-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/sort-{-__-}.sublime-snippet diff --git a/Groovy/Snippets/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet b/Java/Groovy/Snippets/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet similarity index 100% rename from Groovy/Snippets/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet rename to Java/Groovy/Snippets/splitEachLine(separator)-{-line-__-}-copy.sublime-snippet diff --git a/Groovy/Snippets/static-final-method.sublime-snippet b/Java/Groovy/Snippets/static-final-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/static-final-method.sublime-snippet rename to Java/Groovy/Snippets/static-final-method.sublime-snippet diff --git a/Groovy/Snippets/static-final-var.sublime-snippet b/Java/Groovy/Snippets/static-final-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/static-final-var.sublime-snippet rename to Java/Groovy/Snippets/static-final-var.sublime-snippet diff --git a/Groovy/Snippets/static-main-method.sublime-snippet b/Java/Groovy/Snippets/static-main-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/static-main-method.sublime-snippet rename to Java/Groovy/Snippets/static-main-method.sublime-snippet diff --git a/Groovy/Snippets/static-method.sublime-snippet b/Java/Groovy/Snippets/static-method.sublime-snippet similarity index 100% rename from Groovy/Snippets/static-method.sublime-snippet rename to Java/Groovy/Snippets/static-method.sublime-snippet diff --git a/Groovy/Snippets/static-var.sublime-snippet b/Java/Groovy/Snippets/static-var.sublime-snippet similarity index 100% rename from Groovy/Snippets/static-var.sublime-snippet rename to Java/Groovy/Snippets/static-var.sublime-snippet diff --git a/Groovy/Snippets/step(to-amount)-{-n-__-}.sublime-snippet b/Java/Groovy/Snippets/step(to-amount)-{-n-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/step(to-amount)-{-n-__-}.sublime-snippet rename to Java/Groovy/Snippets/step(to-amount)-{-n-__-}.sublime-snippet diff --git a/Groovy/Snippets/switch__case.sublime-snippet b/Java/Groovy/Snippets/switch__case.sublime-snippet similarity index 100% rename from Groovy/Snippets/switch__case.sublime-snippet rename to Java/Groovy/Snippets/switch__case.sublime-snippet diff --git a/Groovy/Snippets/switch__case__default.sublime-snippet b/Java/Groovy/Snippets/switch__case__default.sublime-snippet similarity index 100% rename from Groovy/Snippets/switch__case__default.sublime-snippet rename to Java/Groovy/Snippets/switch__case__default.sublime-snippet diff --git a/Groovy/Snippets/tearDown().sublime-snippet b/Java/Groovy/Snippets/tearDown().sublime-snippet similarity index 100% rename from Groovy/Snippets/tearDown().sublime-snippet rename to Java/Groovy/Snippets/tearDown().sublime-snippet diff --git a/Groovy/Snippets/test-case.sublime-snippet b/Java/Groovy/Snippets/test-case.sublime-snippet similarity index 100% rename from Groovy/Snippets/test-case.sublime-snippet rename to Java/Groovy/Snippets/test-case.sublime-snippet diff --git a/Groovy/Snippets/times-{-n-__-}.sublime-snippet b/Java/Groovy/Snippets/times-{-n-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/times-{-n-__-}.sublime-snippet rename to Java/Groovy/Snippets/times-{-n-__-}.sublime-snippet diff --git a/Groovy/Snippets/to-Array.sublime-snippet b/Java/Groovy/Snippets/to-Array.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Array.sublime-snippet rename to Java/Groovy/Snippets/to-Array.sublime-snippet diff --git a/Groovy/Snippets/to-BigDecimal.sublime-snippet b/Java/Groovy/Snippets/to-BigDecimal.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-BigDecimal.sublime-snippet rename to Java/Groovy/Snippets/to-BigDecimal.sublime-snippet diff --git a/Groovy/Snippets/to-BigInteger.sublime-snippet b/Java/Groovy/Snippets/to-BigInteger.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-BigInteger.sublime-snippet rename to Java/Groovy/Snippets/to-BigInteger.sublime-snippet diff --git a/Groovy/Snippets/to-Boolean.sublime-snippet b/Java/Groovy/Snippets/to-Boolean.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Boolean.sublime-snippet rename to Java/Groovy/Snippets/to-Boolean.sublime-snippet diff --git a/Groovy/Snippets/to-Character.sublime-snippet b/Java/Groovy/Snippets/to-Character.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Character.sublime-snippet rename to Java/Groovy/Snippets/to-Character.sublime-snippet diff --git a/Groovy/Snippets/to-Double.sublime-snippet b/Java/Groovy/Snippets/to-Double.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Double.sublime-snippet rename to Java/Groovy/Snippets/to-Double.sublime-snippet diff --git a/Groovy/Snippets/to-Float.sublime-snippet b/Java/Groovy/Snippets/to-Float.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Float.sublime-snippet rename to Java/Groovy/Snippets/to-Float.sublime-snippet diff --git a/Groovy/Snippets/to-Integer.sublime-snippet b/Java/Groovy/Snippets/to-Integer.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-Integer.sublime-snippet rename to Java/Groovy/Snippets/to-Integer.sublime-snippet diff --git a/Groovy/Snippets/to-List.sublime-snippet b/Java/Groovy/Snippets/to-List.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-List.sublime-snippet rename to Java/Groovy/Snippets/to-List.sublime-snippet diff --git a/Groovy/Snippets/to-String.sublime-snippet b/Java/Groovy/Snippets/to-String.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-String.sublime-snippet rename to Java/Groovy/Snippets/to-String.sublime-snippet diff --git a/Groovy/Snippets/to-URI.sublime-snippet b/Java/Groovy/Snippets/to-URI.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-URI.sublime-snippet rename to Java/Groovy/Snippets/to-URI.sublime-snippet diff --git a/Groovy/Snippets/to-URL.sublime-snippet b/Java/Groovy/Snippets/to-URL.sublime-snippet similarity index 100% rename from Groovy/Snippets/to-URL.sublime-snippet rename to Java/Groovy/Snippets/to-URL.sublime-snippet diff --git a/Groovy/Snippets/try-__-catch__-finally.sublime-snippet b/Java/Groovy/Snippets/try-__-catch__-finally.sublime-snippet similarity index 100% rename from Groovy/Snippets/try-__-catch__-finally.sublime-snippet rename to Java/Groovy/Snippets/try-__-catch__-finally.sublime-snippet diff --git a/Groovy/Snippets/try-__-catch__.sublime-snippet b/Java/Groovy/Snippets/try-__-catch__.sublime-snippet similarity index 100% rename from Groovy/Snippets/try-__-catch__.sublime-snippet rename to Java/Groovy/Snippets/try-__-catch__.sublime-snippet diff --git a/Groovy/Snippets/upto(num)-{-n-__-}.sublime-snippet b/Java/Groovy/Snippets/upto(num)-{-n-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/upto(num)-{-n-__-}.sublime-snippet rename to Java/Groovy/Snippets/upto(num)-{-n-__-}.sublime-snippet diff --git a/Groovy/Snippets/var.sublime-snippet b/Java/Groovy/Snippets/var.sublime-snippet similarity index 100% rename from Groovy/Snippets/var.sublime-snippet rename to Java/Groovy/Snippets/var.sublime-snippet diff --git a/Groovy/Snippets/while-___-{___}.sublime-snippet b/Java/Groovy/Snippets/while-___-{___}.sublime-snippet similarity index 100% rename from Groovy/Snippets/while-___-{___}.sublime-snippet rename to Java/Groovy/Snippets/while-___-{___}.sublime-snippet diff --git a/Groovy/Snippets/withInputStream-{-in-__-}.sublime-snippet b/Java/Groovy/Snippets/withInputStream-{-in-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withInputStream-{-in-__-}.sublime-snippet rename to Java/Groovy/Snippets/withInputStream-{-in-__-}.sublime-snippet diff --git a/Groovy/Snippets/withOutputStream-{-out-__-}.sublime-snippet b/Java/Groovy/Snippets/withOutputStream-{-out-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withOutputStream-{-out-__-}.sublime-snippet rename to Java/Groovy/Snippets/withOutputStream-{-out-__-}.sublime-snippet diff --git a/Groovy/Snippets/withPrintWriter-{-pw-__}.sublime-snippet b/Java/Groovy/Snippets/withPrintWriter-{-pw-__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withPrintWriter-{-pw-__}.sublime-snippet rename to Java/Groovy/Snippets/withPrintWriter-{-pw-__}.sublime-snippet diff --git a/Groovy/Snippets/withReader-{-r-__-}.sublime-snippet b/Java/Groovy/Snippets/withReader-{-r-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withReader-{-r-__-}.sublime-snippet rename to Java/Groovy/Snippets/withReader-{-r-__-}.sublime-snippet diff --git a/Groovy/Snippets/withStream-{-in-__-}.sublime-snippet b/Java/Groovy/Snippets/withStream-{-in-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withStream-{-in-__-}.sublime-snippet rename to Java/Groovy/Snippets/withStream-{-in-__-}.sublime-snippet diff --git a/Groovy/Snippets/withStreams-{-Socket-s-__}.sublime-snippet b/Java/Groovy/Snippets/withStreams-{-Socket-s-__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withStreams-{-Socket-s-__}.sublime-snippet rename to Java/Groovy/Snippets/withStreams-{-Socket-s-__}.sublime-snippet diff --git a/Groovy/Snippets/withWriter(charset)-{-w-__-}.sublime-snippet b/Java/Groovy/Snippets/withWriter(charset)-{-w-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withWriter(charset)-{-w-__-}.sublime-snippet rename to Java/Groovy/Snippets/withWriter(charset)-{-w-__-}.sublime-snippet diff --git a/Groovy/Snippets/withWriter-{-w-__}.sublime-snippet b/Java/Groovy/Snippets/withWriter-{-w-__}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withWriter-{-w-__}.sublime-snippet rename to Java/Groovy/Snippets/withWriter-{-w-__}.sublime-snippet diff --git a/Groovy/Snippets/withWriterAppend(charset)-{-__-}.sublime-snippet b/Java/Groovy/Snippets/withWriterAppend(charset)-{-__-}.sublime-snippet similarity index 100% rename from Groovy/Snippets/withWriterAppend(charset)-{-__-}.sublime-snippet rename to Java/Groovy/Snippets/withWriterAppend(charset)-{-__-}.sublime-snippet diff --git a/Java/Groovy/Symbol List - Case Label.tmPreferences b/Java/Groovy/Symbol List - Case Label.tmPreferences new file mode 100644 index 0000000000..5344e7172b --- /dev/null +++ b/Java/Groovy/Symbol List - Case Label.tmPreferences @@ -0,0 +1,19 @@ + + + + scope + source.groovy meta.statement.conditional.case.label.java + settings + + showInSymbolList + 1 + symbolTransformation + + s/\/\*.*?\*\///g; # remove block comments + s/\/\/[^\n]*\n//g; # remove line comments + s/\s+//g; # remove whitespace + s/^/case /; # prepend case keyword + + + + diff --git a/Groovy/Symbol List - Variables.tmPreferences b/Java/Groovy/Symbol List - Classes.tmPreferences similarity index 58% rename from Groovy/Symbol List - Variables.tmPreferences rename to Java/Groovy/Symbol List - Classes.tmPreferences index bc79ee8f14..359c4c921a 100644 --- a/Groovy/Symbol List - Variables.tmPreferences +++ b/Java/Groovy/Symbol List - Classes.tmPreferences @@ -2,15 +2,13 @@ scope - source.groovy meta.definition.class-variable.name + source.groovy meta.class.identifier entity.name.class settings + showInIndexedSymbolList + 1 showInSymbolList 1 - symbolTransformation - - s/.+/$0/g - diff --git a/Groovy/Symbol List - Class Variables.tmPreferences b/Java/Groovy/Symbol List - Constants.tmPreferences similarity index 54% rename from Groovy/Symbol List - Class Variables.tmPreferences rename to Java/Groovy/Symbol List - Constants.tmPreferences index 1435271104..694d9f52ba 100644 --- a/Groovy/Symbol List - Class Variables.tmPreferences +++ b/Java/Groovy/Symbol List - Constants.tmPreferences @@ -2,15 +2,13 @@ scope - source.groovy meta.definition.class meta.definition.class-variable.name + source.groovy entity.name.constant.java settings + showInIndexedSymbolList + 1 showInSymbolList 1 - symbolTransformation - - s/.+/ $0/g - diff --git a/Groovy/Symbol List - Methods.tmPreferences b/Java/Groovy/Symbol List - Enums.tmPreferences similarity index 54% rename from Groovy/Symbol List - Methods.tmPreferences rename to Java/Groovy/Symbol List - Enums.tmPreferences index 3ffdd67b3b..d7da12f6c1 100644 --- a/Groovy/Symbol List - Methods.tmPreferences +++ b/Java/Groovy/Symbol List - Enums.tmPreferences @@ -2,15 +2,13 @@ scope - source.groovy meta.definition.method.signature + source.groovy meta.enum.identifier entity.name.enum settings + showInIndexedSymbolList + 1 showInSymbolList 1 - symbolTransformation - - s/\s*.*\s+(\w+)\s*(\(.*\)).*/ $1$2/g - diff --git a/Groovy/Symbol List - Classes.tmPreferences b/Java/Groovy/Symbol List - Fields.tmPreferences similarity index 73% rename from Groovy/Symbol List - Classes.tmPreferences rename to Java/Groovy/Symbol List - Fields.tmPreferences index e8df59ff5e..0354fa399d 100644 --- a/Groovy/Symbol List - Classes.tmPreferences +++ b/Java/Groovy/Symbol List - Fields.tmPreferences @@ -2,7 +2,7 @@ scope - source.groovy entity.name.type.class + source.groovy meta.field.identifier variable.other settings showInSymbolList diff --git a/Java/Groovy/Symbol List - Imports.tmPreferences b/Java/Groovy/Symbol List - Imports.tmPreferences new file mode 100644 index 0000000000..15ac368c7c --- /dev/null +++ b/Java/Groovy/Symbol List - Imports.tmPreferences @@ -0,0 +1,21 @@ + + + + scope + source.groovy meta.import meta.path + settings + + showInIndexedSymbolList + 0 + showInSymbolList + 1 + symbolTransformation + + s/\/\*.*?\*\///g; # remove block comments + s/\/\/[^\n]*\n//g; # remove line comments + s/\s+//g; # remove whitespace + s/^/import /; # prepend import keyword + + + + diff --git a/Java/Groovy/Symbol List - Interfaces.tmPreferences b/Java/Groovy/Symbol List - Interfaces.tmPreferences new file mode 100644 index 0000000000..4602ba54b2 --- /dev/null +++ b/Java/Groovy/Symbol List - Interfaces.tmPreferences @@ -0,0 +1,14 @@ + + + + scope + source.groovy meta.interface.identifier entity.name.interface + settings + + showInIndexedSymbolList + 1 + showInSymbolList + 1 + + + diff --git a/Java/Groovy/Symbol List - Modules.tmPreferences b/Java/Groovy/Symbol List - Modules.tmPreferences new file mode 100644 index 0000000000..a5aa305ec2 --- /dev/null +++ b/Java/Groovy/Symbol List - Modules.tmPreferences @@ -0,0 +1,18 @@ + + + + scope + + settings + + showInSymbolList + 1 + symbolTransformation + + s/\/\*.*?\*\///g; # remove block comments + s/\/\/[^\n]*\n//g; # remove line comments + s/\s+//g; # remove whitespace + + + + diff --git a/Java/Groovy/Symbol List - Packages.tmPreferences b/Java/Groovy/Symbol List - Packages.tmPreferences new file mode 100644 index 0000000000..a9a1597786 --- /dev/null +++ b/Java/Groovy/Symbol List - Packages.tmPreferences @@ -0,0 +1,18 @@ + + + + scope + + settings + + showInSymbolList + 1 + symbolTransformation + + s/\/\*.*?\*\///g; # remove block comments + s/\/\/[^\n]*\n//g; # remove line comments + s/\s+//g; # remove whitespace + + + + diff --git a/Java/Groovy/tests/syntax_test_groovy.groovy b/Java/Groovy/tests/syntax_test_groovy.groovy new file mode 100644 index 0000000000..bec31e783e --- /dev/null +++ b/Java/Groovy/tests/syntax_test_groovy.groovy @@ -0,0 +1,409 @@ +// SYNTAX TEST "Packages/Java/Groovy.sublime-syntax" \ +// <- source.groovy + + + +import java.io +// ^^^^^^^ invalid.illegal.import-of-default-import +import java.lang +// ^^^^^^^^^ invalid.illegal.import-of-default-import +import java.math.BigDecimal +// ^^^^^^^^^^^^^^^^^^^^ invalid.illegal.import-of-default-import +import java.math.BigInteger +// ^^^^^^^^^^^^^^^^^^^^ invalid.illegal.import-of-default-import +import java.net +// ^^^^^^^^ invalid.illegal.import-of-default-import +import java.util +// ^^^^^^^^^ invalid.illegal.import-of-default-import +import groovy.lang +// ^^^^^^^^^^^ invalid.illegal.import-of-default-import +import groovy.util +// ^^^^^^^^^^^ invalid.illegal.import-of-default-import + +// Tests for issue 1260 + +def defectiveSyntaxTest(String value) { +// <- meta.function.return-type support.class +// ^^^^^^^^^^^^^^^^^^^ entity.name.function +// ^ meta.group punctuation.section.group.begin +// ^^^^^^ meta.function.parameters support.class +// ^^^^^ variable.parameter +// ^ meta.definition.method punctuation.definition.parameters.end + println value +} + +void voidCheck(String value) { +// <- meta.function.return-type storage.type.void +// ^ entity.name.function +// ^ entity.name.function +// ^ meta.function.parameters support.class +// ^ variable.parameter +} + +double interpretString(String value) { +// <- meta.function.return-type storage.type.primitive +// ^ entity.name.function +// ^ entity.name.function +// ^ meta.function.parameters support.class +// ^ variable.parameter + return Double.parseDouble(value); +} + +defectiveSyntaxTest("hello") +// <- meta.function-call.identifier +//^^^^^^^^^^^^^^^^^ meta.function-call.identifier +// ^ meta.group punctuation.section.group.begin +// ^^^^^^^ meta.function-call.arguments string.quoted.double +// ^ meta.group punctuation.section.group.end + +voidCheck(123456) +// <- meta.function-call.identifier variable.function +//^^^^^^^ meta.function-call.identifier variable.function +// ^ meta.group punctuation.section.group.begin +// ^^^^^^ meta.function-call.arguments constant.numeric +// ^ meta.group punctuation.section.group.end +// ^ - meta.function-call + +chartHistogram([1,1,2,3]) +// <- meta.function-call.identifier variable.function +//^^^^^^^^^^^^ meta.function-call.identifier variable.function +// ^^^^^^^^^^ meta.function-call.arguments +// ^ meta.group punctuation.section.group.begin +// ^^^^^^^^^ meta.brackets +// ^ punctuation.section.brackets.begin +// ^ constant.numeric +// ^ punctuation.separator.comma +// ^ punctuation.section.brackets.end +// ^ meta.group punctuation.section.group.end - meta.brackets + +def greeting = "Hello ${true ? 'World' : 'Home'}" +// <- storage.type.def +//^ storage.type.def +// ^ keyword.operator.assignment +// ^ punctuation.definition.string.begin +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double +// ^^ punctuation.section.interpolation.begin +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.groovy.embedded.groovy +// ^^^^ constant.language +// ^^^^^^^^^^^^^^^^^^ meta.evaluation.ternary +// ^^ - meta.evaluation.ternary +// ^ keyword.operator.ternary +// ^ punctuation.definition.string.begin +// ^^^^^^^ string.quoted.single +// ^ punctuation.definition.string.end +// ^ keyword.operator.ternary.expression-separator +// ^ punctuation.definition.string.begin +// ^^^^^^ string.quoted.single +// ^ punctuation.definition.string.end +// ^ punctuation.section.interpolation.end +// ^ punctuation.definition.string.end +// ^ - string.quoted - invalid + + + + + +//[ STRINGS ]//////////////////////////////////////////////////////////////// \ + + +multilineSingle = ''' +// ^^^ string.quoted.single.block punctuation.definition.string.begin + ''' +// ^^^ string.quoted.single.block punctuation.definition.string.end + +multilineDouble = """ +// ^^^ string.quoted.double.block punctuation.definition.string.begin + """ +// ^^^ string.quoted.double.block punctuation.definition.string.end + +multilineDollarSlashy = $/ +// ^^ string.other.dollar-slashy.block punctuation.definition.string.begin + /$ +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +escapedNewlineSingle = '\ +// ^ meta.string string.quoted.single punctuation.definition.string.begin \ +// ^^ constant.character.escape - invalid.illegal.unexpected-newline \ + ' +// ^ string.quoted.single punctuation.definition.string.end + +escapedNewlineDouble = "\ +// ^ string.quoted.double punctuation.definition.string.begin \ +// ^^ string.quoted.double constant.character.escape - invalid.illegal.unexpected-newline \ + " +// ^ string.quoted.double punctuation.definition.string.end + +escapeNewlineTripleSingle = '''\ +// ^^^ string.quoted.single.block punctuation.definition.string.begin \ +// ^^ string.quoted.single.block constant.character.escape - invalid.illegal.unexpected-newline \ + ''' +// ^^^ string.quoted.single.block punctuation.definition.string.end + +escapeNewlineTripleDouble = """\ +// ^^^ string.quoted.double.block punctuation.definition.string.begin \ +// ^^ string.quoted.double.block constant.character.escape - invalid.illegal.unexpected-newline \ + """ +// ^^^ string.quoted.double.block punctuation.definition.string.end + +escapedNewlineInterpolated = "${\ +// ^^ string.quoted.double source.groovy.embedded.groovy constant.character.escape +}"; + +escapeInterpolation = "\${notInterpolated}" +// ^^^^^^^^^^^^^^^^^^^^^ string.quoted.double +// ^^ constant.character.escape - punctuation.section.embedded +// ^^^^^^^^^^^^^^^^^ - source.groovy.embedded.groovy + +validEscapesSingle = '\$\'\"\t\n\r\t\f\b\u00D7\\' +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.single constant.character.escape + +validEscapesDouble = "\$\'\"\t\n\r\t\f\b\u00D7\\" +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double constant.character.escape + +validEscapesTripleSingle = '''\$\'\"\t\n\r\t\f\b\u00D7\\''' +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.single.block constant.character.escape + +validEscapesTripleDouble = """\$\'\"\t\n\r\t\f\b\u00D7\\""" +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.block constant.character.escape + +validEscapesSlashy= /\/\u00D7/ +// ^^^^^^^^ string.regexp meta.mode.extended constant.character.escape + +invalidEscapesSingle = '\y \1 \+ \{' +// ^^^^^^^^^^^ meta.string string.quoted.single - constant.character.escape + +invalidEscapesDouble = "\y \1 \+ \{" +// ^^^^^^^^^^^ meta.string string.quoted.double - constant.character.escape + +invalidEscapesTripleSingle = '''\y \1 \+ \{''' +// ^^^^^^^^^^^ meta.string string.quoted.single.block - constant.character.escape + +invalidEscapesTripleDouble = """\y \1 \+ \{""" +// ^^^^^^^^^^^ meta.string string.quoted.double.block - constant.character.escape + +regularCharactersSlashy = /\$\'\"\t\n\r\t\f\b\y\1\+\{/ +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string string.regexp meta.mode.extended.regexp - constant.character.escape + +regularCharactersDollarSlashy = $/\$\'\"\t\n\r\t\f\b\y\1\+\{/$ +// ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string string.other.dollar-slashy.block - constant.character.escape + +interpolation1 = "2 + 3 = ${2 + 3}" +// ^^ punctuation.section.interpolation.begin +// ^^^^^ source.groovy.embedded.groovy +// ^ constant.numeric +// ^ keyword.operator.arithmetic +// ^ constant.numeric +// ^ punctuation.section.interpolation.end +// ^ punctuation.definition.string.end + +interpolation3 = "Hello $name" +// ^^^^^ variable.other.interpolated +// ^ punctuation.definition.string.end + +interpolation4 = "Hello $person.name" +// ^^^^^^^ variable.other.interpolated +// ^ punctuation.accessor.dot +// ^^^^ string.quoted.double variable.other.interpolated +// ^ punctuation.definition.string.end + +interpolation5 = "$a2_3" +// ^^^^^ string.quoted.double variable.other.interpolated +// ^ punctuation.definition.string.end + +interpolation6 = "The sum of 1 and 2 is equal to ${def a = 1; a + 2}" +// ^^^^^^^^^^^^^^^^ meta.string string.quoted.double source.groovy.embedded.groovy +// ^^^ meta.declaration.type support.class +// ^ constant.numeric +// ^ keyword.operator.arithmetic +// ^ constant.numeric +// ^ punctuation.definition.string.end + +interpolation7 = "foo { ${if (x) { y } else { z } } }" +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double +// ^ - punctuation +// ^^ keyword.control.conditional.if +// ^ punctuation.section.block.begin +// ^ punctuation.section.block.end - punctuation.section.interpolation +// ^^^^ keyword.control.conditional.else +// ^ punctuation.section.block.begin +// ^ punctuation.section.block.end - punctuation.section.interpolation +// ^ punctuation.section.interpolation.end +// ^ - punctuation +// ^ punctuation.definition.string.end + +unicodeInterpolation1 = "$À" +// ^^ variable.other.interpolated +// ^ meta.string string.quoted.double punctuation.definition.string.end + +unicodeInterpolation2 = "$À.ö" +// ^^ variable.other.interpolated +// ^ punctuation.accessor.dot +// ^ variable.other.interpolated +// ^ meta.string string.quoted.double punctuation.definition.string.end + +unicodeInterpolation3 = "$\u00c0.\u00F6" +// ^^^^^^^ variable.other.interpolated +// ^ punctuation.accessor.dot +// ^^^^^^ variable.other.interpolated +// ^ meta.string string.quoted.double punctuation.definition.string.end + +invalidInterpolation1 = "$" +// ^ invalid.illegal.stray-dollar-sign +// ^ meta.string string.quoted.double punctuation.definition.string.end + +invalidInterpolation2 = "$21" +// ^^^ invalid.illegal.malformatted-interpolation - variable.other.interpolated +// ^ meta.string string.quoted.double punctuation.definition.string.end + +invalidInterpolation3 = "$$" +// ^^ invalid.illegal - variable.other.interpolated +// ^ meta.string string.quoted.double punctuation.definition.string.end + +notAnAccessorDot1 = "$obj." +// ^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^ - punctuation.accessor.dot +// ^ punctuation.definition.string.end - variable.other.interpolated + +notAnAccessorDot2 = "$obj.2" +// ^^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^ - punctuation.accessor.dot +// ^ - variable.other.interpolated +// ^ punctuation.definition.string.end + +notAnAccessorDot3 = "$obj.×" +// ^^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^ - punctuation.accessor.dot +// ^ - variable.other.interpolated +// ^ punctuation.definition.string.end + +notAnAccessorDot4 = "$obj.\u00D7" +// ^^^^^^^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^ - punctuation.accessor.dot +// ^^^^^^ constant.character.escape - variable.other.interpolated +// ^ punctuation.definition.string.end + +notASafeNavigation = "$obj?.nope" +// ^^^^^^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^^ - punctuation.accessor +// ^^^^ - variable.other.interpolated +// ^ punctuation.definition.string.end + +notAMethodCall = "$obj.nope()" +// ^^^^^^^^^^^ string.quoted.double +// ^^^^ variable.other.interpolated +// ^ punctuation.accessor.dot +// ^^^^ variable.other.interpolated +// ^^^^^^ - meta.method-call +// ^ punctuation.definition.string.end + +lazyInterpolation = "lazy ${-> someVariable}" +// ^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double +// ^^ keyword.declaration.function.arrow +// ^ punctuation.definition.string.end + +invalidStringClose = """"""" +// ^^^^ invalid.illegal + +unclosedStr1 = " +// ^ invalid.illegal.unexpected-newline + +unclosedStr2 = ' +// ^ invalid.illegal.unexpected-newline + +unclosedStr3 = "newlines ${''' + aren't valid inside the interpolation but outside of the + multiline string +'''} +// ^ invalid.illegal.unexpected-newline + +unclosedStr4 = "newlines ${''' + aren't valid inside the interpolation but outside of the + multiline string''' +// ^ invalid.illegal.unexpected-newline + +// multiline string embedded in a single line string +embed1 = "embed ${''' +// ^ string.quoted.double punctuation.definition.string.begin +// ^^^^^^ string.quoted.double +// ^^ punctuation.section.interpolation.begin +// ^^^ source.groovy.embedded.groovy + Some text +//^^^^^^^^^ string.quoted.double source.groovy.embedded.groovy string.quoted.single.block +'''}" +// ^ punctuation.section.interpolation.end +// ^ string.quoted.double punctuation.definition.string.end + +// multiline > singleline > multiline +embed2 = """I hope + ${ + " people ${'''don't +// ^^^^^^^ string.quoted.double.block source.groovy.embedded.groovy string.quoted.double +// ^^^^^ string.quoted.single.block + actually'''}" +// ^ string.quoted.double.block source.groovy.embedded.groovy string.quoted.double punctuation.section.interpolation.end + } +// ^ punctuation.section.interpolation.end + do this + """ +//^^^ string.quoted.double.block punctuation.definition.string.end + +embeddedInterpolation1 = "${"$yep"}" +// ^^^^ string.quoted.double source.groovy.embedded.groovy string.quoted.double variable.other.interpolated + +embeddedNonInterpolation = "${'$nope'}" +// ^^^^^ string.quoted.double source.groovy.embedded.groovy string.quoted.single - variable.other.interpolated + +dollarSlashy01 = $/Hello $person.name/$ +// ^^^^^^^ string.other.dollar-slashy.block variable.other.interpolated +// ^ punctuation.accessor.dot +// ^^^^ string.other.dollar-slashy.block variable.other.interpolated +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy02 = $/today is ${new Date().format( 'yyyy-MM-dd' )}./$ +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.groovy.embedded.groovy +// ^^ punctuation.section.interpolation.begin +// ^^^ keyword.other.storage.new +// ^^^^^^^^^^^^^^^^^^^^^^ meta.function-call +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy03 = $/$ dollar sign/$ +// ^^^^^^^^^^^^^ string.other.dollar-slashy.block - invalid.illegal +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy04 = $/$$ escaped dollar sign/$ +// ^^ string.other.dollar-slashy.block constant.character.escape - invalid.illegal - variable.other.interpolated +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy05 = $/\ backslash/$ +// ^^^^^^^^^^^ string.other.dollar-slashy.block - invalid.illegal - constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy06 = $// forward slash/$ +// ^^^^^^^^^^^^^^^ string.other.dollar-slashy.block - invalid.illegal - constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy07 = $/$/ escaped forward slash/$ +// ^^ string.other.dollar-slashy.block constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy08 = $/$$$/ escaped opening dollar slashy/$ +// ^^^^ string.other.dollar-slashy.block constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy09 = $/$/$$ escaped closing dollar slashy/$ +// ^^^^ string.other.dollar-slashy.block constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +dollarSlashy10 = $/${$$}/$ +// ^^ string.other.dollar-slashy.block source.groovy.embedded.groovy - constant.character.escape +// ^^ string.other.dollar-slashy.block punctuation.definition.string.end + +interpolatedSlashy = /a ${color} $obj$/ +// ^^^^^ meta.string string.regexp meta.interpolation +// ^^^^ string.regexp variable.other.interpolated +// ^ string.regexp - variable.other.interpolated diff --git a/Java/Groovy/tests/syntax_test_jenkins.Jenkinsfile b/Java/Groovy/tests/syntax_test_jenkins.Jenkinsfile new file mode 100644 index 0000000000..2e88812b11 --- /dev/null +++ b/Java/Groovy/tests/syntax_test_jenkins.Jenkinsfile @@ -0,0 +1,148 @@ +// SYNTAX TEST "Packages/Java/Groovy.sublime-syntax" \ +// <- source.groovy + +// this is a comment +// <- comment.line.double-slash punctuation.definition.comment +// ^^^^^^^^^^^^^^^^^^ comment.line.double-slash + +pipeline { + agent { + docker { image 'node:20.17.0-alpine3.20' } + } + stages { + stage('Test') { + steps { + sh 'node --version' + } + } + } +} + +def call() { +// <- meta.function.return-type support.class +//^ meta.function.return-type support.class +// ^^^^ meta.function.identifier entity.name.function +// ^ meta.function.parameters meta.group punctuation.section.group.begin +// ^ meta.function.parameters meta.group punctuation.section.group.end +// ^ meta.block punctuation.section.block.begin + + sh """#!/bin/bash +// ^^ meta.block support.function +// ^^^ meta.string string.quoted.double.block punctuation.definition.string.begin meta.shell +// ^ meta.shell source.shell.bash.embedded comment.line.number-sign.shell punctuation.definition.comment.shell + echo "hello ${world}" +// ^^^^ meta.shell source.shell.bash.embedded meta.function-call.identifier.shell support.function.shell +// ^ meta.interpolation.parameter.shell punctuation.definition.variable.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.begin.shell +// ^^^^^ meta.interpolation.parameter.shell variable.other.readwrite.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.end.shell +// ^ - meta.interpolation + """ +// ^^^ meta.string string.quoted.double.block punctuation.definition.string.end meta.shell + + sh '''#!/bin/bash +// ^^ meta.block support.function +// ^^^ meta.string string.quoted.single.block punctuation.definition.string.begin meta.shell +// ^ meta.shell source.shell.bash.embedded comment.line.number-sign.shell punctuation.definition.comment.shell + echo "hello ${world}" +// ^^^^ meta.shell source.shell.bash.embedded meta.function-call.identifier.shell support.function.shell +// ^ meta.interpolation.parameter.shell punctuation.definition.variable.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.begin.shell +// ^^^^^ meta.interpolation.parameter.shell variable.other.readwrite.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.end.shell +// ^ - meta.interpolation + ''' +// ^^^ meta.string string.quoted.single.block punctuation.definition.string.end meta.shell + + sh '#!/bin/bash +// ^^ meta.block support.function +// ^ meta.string string.quoted.single punctuation.definition.string.begin meta.shell +// ^ meta.shell source.shell.bash.embedded comment.line.number-sign.shell punctuation.definition.comment.shell + echo "hello ${world}" +// ^^^^ meta.shell source.shell.bash.embedded meta.function-call.identifier.shell support.function.shell +// ^ meta.interpolation.parameter.shell punctuation.definition.variable.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.begin.shell +// ^^^^^ meta.interpolation.parameter.shell variable.other.readwrite.shell +// ^ meta.interpolation.parameter.shell punctuation.section.interpolation.end.shell +// ^ - meta.interpolation + ' +// ^ meta.string string.quoted.single punctuation.definition.string.end meta.shell +} +// <- meta.block punctuation.section.block.end + +@Library('somelib') _ +// <- meta.declaration.type meta.annotation punctuation.definition.annotation +//^^^^^^ meta.declaration.type meta.annotation variable.annotation + +properties([ + parameters([ + booleanParam(name: 'SOME_PARAM', defaultValue: false, description: 'Example parameter'), + validatingString(name: 'COMMIT_HASH', defaultValue: '', regex: '^(?:[a-z0-9]{40})?$', failedValidationMessage: 'Commit must be valid if specified', description: 'Commit hash'), + ]), +]) + +// Project config +Map config = [ +// <- storage.type.class +// ^^^^^^ variable.other.readwrite +// ^ keyword.operator.assignment +// ^ meta.brackets punctuation.section.brackets.begin + containerWorkDir: '/src', +// ^^^^^^^^^^^^^^^^ meta.variable.identifier variable.other +// ^ punctuation.definition.separator.key-value +// ^^^^^^ meta.string string.quoted.single +// ^ punctuation.separator.comma + DEFAULT_BRANCH: 'master', +// ^^^^^^^^^^^^^^ constant.other.java +// ^ punctuation.definition.separator.key-value +] +// <- meta.brackets punctuation.section.brackets.end +//^ - meta.structure +// Deployment decision variables +Boolean isPullRequest = (env.CHANGE_ID != null) +// ^^^^ storage.type.primitive +// ^^^^^^^^^^^^^ variable.other +// ^ keyword.operator.assignment +// ^^^^^^^^^^^^^^^^^^^^^^^ meta.group +// ^ punctuation.section.group.begin +// ^^ keyword.operator.comparison +// ^^^^ constant.language.null +// ^ punctuation.section.group.end + +// Environment section +env.SOME_ENV_VAR = "refs/heads/${config.DEFAULT_BRANCH.toLowerCase()}" + +int something = sh(returnStdout: true, script: '''#!/bin/bash + set -eu + echo 7 + ''') + +node('some-node-name') { + try { + // <- meta.block keyword.control.exception.try + // ^ punctuation.section.braces.begin + lock(lockName) { + + } + } catch (InterruptedException e) { + // <- punctuation.section.braces.end + //^^^^^ keyword.control.exception.catch + // ^ punctuation.section.group.begin + // ^^^^^^^^^^^^^^^^^^^^ storage.type.class + // ^ variable.other.readwrite + // ^ punctuation.section.group.end + // ^ punctuation.section.block.begin + if (isDeployment) { + // <- meta.braces meta.braces keyword.control.conditional.if + // ^ meta.braces meta.braces meta.group punctuation.section.group.begin + // ^^^^^^^^^^^^ meta.braces meta.braces meta.group variable.other.readwrite + // ^ meta.braces meta.braces meta.group punctuation.section.group.end + // ^ meta.braces meta.braces meta.braces punctuation.section.braces.begin + notify.deployment(channel: config.jobStatusChannel, status: 'ABORTED', environment: params.CI_ENVIRONMENT) + } + throw e + // <- meta.block meta.block keyword.control.flow.throw + // ^ meta.block meta.block variable.other.readwrite + } + // <- meta.braces meta.braces punctuation.section.braces.end +} diff --git a/Java/Groovy/tests/syntax_test_scope_conflicts.groovy b/Java/Groovy/tests/syntax_test_scope_conflicts.groovy new file mode 100644 index 0000000000..44b7692f89 --- /dev/null +++ b/Java/Groovy/tests/syntax_test_scope_conflicts.groovy @@ -0,0 +1,177 @@ +// SYNTAX TEST "Packages/Java/Groovy.sublime-syntax" \ +// <- source.groovy + +//[ MERGE CONFLICT MARKERS ]///////////////////////////////////////////////// \ + + +<<<<<<< HEAD +// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff + // <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff +//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation +// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation + ours +======= +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + theirs +======= branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + theirs +||||||| +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + base +||||||| branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + base +>>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + after + +multilineDoubleMergeConflictMarkers = """ +<<<<<<< HEAD +// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff + // <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff +//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation +// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation + ours +======= +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + theirs +======= branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + theirs +||||||| +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + base +||||||| branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + base +>>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + after +""" + + +multilineSingleMergeConflictMarkers = ''' +<<<<<<< HEAD +// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff + // <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff +//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation +// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation + ours +======= +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + theirs +======= branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + theirs +||||||| +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + base +||||||| branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + base +>>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + after +''' + + +multilineDollarSlashyMergeConflictMarkers = $/ +<<<<<<< HEAD +// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff + // <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff +//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation +// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation + ours +======= +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + theirs +======= branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + theirs +||||||| +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + base +||||||| branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + base +>>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + after +/$ diff --git a/Java/Groovy/tests/syntax_test_shebang.groovy b/Java/Groovy/tests/syntax_test_shebang.groovy new file mode 100644 index 0000000000..6646da2249 --- /dev/null +++ b/Java/Groovy/tests/syntax_test_shebang.groovy @@ -0,0 +1,5 @@ +#! SYNTAX TEST "Packages/Java/Groovy.sublime-syntax" groovy +#! <- source.groovy comment.line.shebang.groovy punctuation.definition.comment.groovy + #! <- comment.line.shebang.groovy punctuation.definition.comment.groovy +#!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.line.shebang.groovy +#! ^^^^^^ comment.line.shebang.groovy constant.language.shebang.groovy diff --git a/Java/Java.sublime-syntax b/Java/Java.sublime-syntax index 15b5ff89ba..fdbdf6520e 100644 --- a/Java/Java.sublime-syntax +++ b/Java/Java.sublime-syntax @@ -16,119 +16,20 @@ first_line_match: |- | ^ \s* // .*? -\*- .*? \bjava\b .*? -\*- # editorconfig ) -############################################################################### - -variables: - shebang_language: \b(?:bsh|java)\b - - # Reserved keywords - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls-3.9 - reserved_words: |- - (?x: - {{keywords}} - | {{storage_types}} - | {{storage_modifiers}} - | {{constants}} - | {{variables}} - ) - keywords: |- - (?x: - {{declaration_keywords}} - | {{control_keywords}} - | {{operator_keywords}} - | {{illegal_keywords}} - ) - declaration_keywords: |- - (?x: class | enum | @?interface | var | void | extends | implements | import | package ) - control_keywords: |- - (?x: assert | break | case | catch | continue | do | else | finally | for - | if | return | switch | throw | throws | try | while | yield ) - operator_keywords: |- - (?x: new | instanceof ) - illegal_keywords: |- - (?x: const | goto ) - - # Storage Modifiers - storage_modifiers: |- - (?x: - {{class_modifier}} - | {{class_no_modifier}} - ) - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.1.1 - class_modifier: |- - (?x: public | protected | private | abstract | final | sealed | static | strictfp ) - class_no_modifier: |- - (?x: default | native | synchronized | transient | volatile ) - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.8 - constructor_modifier: |- - (?x: public | protected | private ) - constructor_no_modifier: |- - (?x: abstract | default | final | native | sealed | static | strictfp | synchronized | transient | volatile ) - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.3.1 - field_modifier: |- - (?x: public | protected | private | final | static | transient | volatile ) - field_no_modifier: |- - (?x: abstract | default | native | sealed | strictfp | synchronized ) - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-9.1.1 - interface_modifier: |- - (?x: public | protected | private | abstract | sealed | static | strictfp ) - interface_no_modifier: |- - (?x: default | final | native | synchronized | transient | volatile ) - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.4.3 - # https://docs.oracle.com/javase/specs/jls/se13/html/jls-9.html#jls-9.4 - method_modifier: |- - (?x: public | protected | private | abstract | default | final | native | static | strictfp | synchronized ) - method_no_modifier: |- - (?x: sealed | transient | volatile ) - - # Storage Types - storage_types: |- - (?x: boolean | byte | char | short | int | float | long | double ) - - # Literals - constants: |- - (?x: false | null | true ) - variables: |- - (?x: _ | super | this ) - - # Identifiers - break: (?!{{id_char}}) - - identifier: (?!{{reserved_words}}[^{{id_char}}]){{id}} - - id: (?:{{id_first_char}}{{id_char}}*) - id_first_char: '[\p{L}_$]' - id_char: '[\p{L}\p{N}_$]' - - classcase_id: (?:\p{Lu}{{id_char}}*) - lowercase_id: (?:[_$]*\p{Ll}[\p{Ll}\p{N}_$]*{{break}}) - uppercase_id: (?:[_$]*\p{Lu}[\p{Lu}\p{N}_$]*{{break}}) - - # digits - bin_digit: '[01_]' - oct_digit: '[0-7_]' - dec_digit: '[\d_]' - hex_digit: '[\h_]' - dec_exponent: '[eE][-+]?{{dec_digit}}*' - hex_exponent: '[pP][-+]?{{dec_digit}}*' - float_suffix: '[dDfF]{{break}}' - int_suffix: '[lL]{{break}}' - - escape_octal: \\[0-3]?[0-7]{1,2} - escape_other: \\[btnfr"'\\] - escape_unicode: \\u+\h{4} - - # accessor but no variadic operator - single_dot: \.(?!\.) - -############################################################################### +###[ CONTEXTS ]################################################################ contexts: + prototype: + - include: comments + - include: illegal-keywords + main: - meta_include_prototype: false - match: '' push: [java, shebang] +###[ JAVA ]#################################################################### + java: - include: import - include: module @@ -187,7 +88,7 @@ contexts: scope: comment.block.documentation.java punctuation.definition.comment.begin.java - embed: Packages/Java/Embeddings/JavaDoc.sublime-syntax#javadoc + embed: Packages/Java/Java/Embeddings/JavaDoc.sublime-syntax#javadoc embed_scope: comment.block.documentation.java escape: \*+/ escape_captures: @@ -2522,7 +2423,6 @@ contexts: scope: punctuation.definition.string.end.java pop: 1 - include: illegal-newline - - include: merge-conflict-markers - include: literal-string-escapes literal-double-quoted-textblocks: @@ -2539,8 +2439,8 @@ contexts: - match: \"{3} scope: punctuation.definition.string.end.java pop: 1 - - include: merge-conflict-markers - include: literal-string-escapes + - include: merge-conflict-markers literal-string-escapes: # https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls-3.3 @@ -2556,21 +2456,115 @@ contexts: operators: # https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls-3.12 - - match: (<<|>>>?|[-+*/%|&\^])= - scope: keyword.operator.assignment.augmented.java - - match: '<<|>>>?' - scope: keyword.operator.bitwise.java - - match: '==|!=|<=|>=|<>|<|>' + - include: diamond-operators + - include: assignment-augmented-bitwise-shift-operators + - include: bitwise-shift-operators + - include: relational-operators + - include: assignment-augmented-operators + - include: arithmetic-operators + - include: logical-operators + - include: bitwise-operators + - include: comparison-operators + - include: assignment-operators + - include: ternary-operators + + diamond-operators: + - match: '<>' scope: keyword.operator.comparison.java + + assignment-augmented-bitwise-shift-operators: + # NOTE: no unsigned shift left augmented assignment in Java + - match: '>>>=' + scope: keyword.operator.assignment.augmented.bitwise.shift.right.unsigned.java + + - match: '<<=' + scope: keyword.operator.assignment.augmented.bitwise.shift.left.signed.java + - match: '>>=' + scope: keyword.operator.assignment.augmented.bitwise.shift.right.signed.java + + bitwise-shift-operators: + # NOTE: no unsigned shift left in Java + - match: '>>>' + scope: keyword.operator.bitwise.shift.right.unsigned.java + + - match: '<<' + scope: keyword.operator.bitwise.shift.left.signed.java + - match: '>>' + scope: keyword.operator.bitwise.shift.right.signed.java + + relational-operators: + - match: '<=' + scope: keyword.operator.relational.less-equal.java + - match: '>=' + scope: keyword.operator.relational.greater-equal.java + + - match: '<' + scope: keyword.operator.relational.less.java + - match: '>' + scope: keyword.operator.relational.greater.java + + assignment-augmented-operators: + - match: '\+=' + scope: keyword.operator.assignment.augmented.addition.java + - match: '-=' + scope: keyword.operator.assignment.augmented.subtraction.java + - match: '\*=' + scope: keyword.operator.assignment.augmented.multiplication.java + - match: '/=' + scope: keyword.operator.assignment.augmented.division.java + - match: '%=' + scope: keyword.operator.assignment.augmented.remainder.java + + - match: ([|&\^])= + scope: keyword.operator.assignment.augmented.java + + arithmetic-operators: + - match: '\+\+' + scope: keyword.operator.arithmetic.increment.java + - match: '\-\-' + scope: keyword.operator.arithmetic.decrement.java + + - match: '\+' + scope: keyword.operator.arithmetic.addition.java + - match: '\-' + scope: keyword.operator.arithmetic.subtraction.java + - match: '\*' + scope: keyword.operator.arithmetic.multiplication.java + - match: '/' + scope: keyword.operator.arithmetic.division.java + - match: '%' + scope: keyword.operator.arithmetic.remainder.java + + logical-operators: + - match: '&&' + scope: keyword.operator.logical.and.java + - match: '\|\|' + scope: keyword.operator.logical.or.java + - match: '!(?!=)' + scope: keyword.operator.logical.not.java + + bitwise-operators: + - match: '~' + scope: keyword.operator.bitwise.not.java + - match: '\^' + scope: keyword.operator.bitwise.xor.java + - match: '&' + scope: keyword.operator.bitwise.and.java + - match: '\|' + scope: keyword.operator.bitwise.or.java + + comparison-operators: + - match: '==' + scope: keyword.operator.comparison.equal.value.java + - match: '!=' + scope: keyword.operator.comparison.not-equal.value.java + + assignment-operators: - match: '=' scope: keyword.operator.assignment.java push: variable-initializer - - match: '\+\+?|\-\-?|[*/%]' - scope: keyword.operator.arithmetic.java - - match: '!|&&|\|\|' - scope: keyword.operator.logical.java - - match: '[~|&\^]' - scope: keyword.operator.bitwise.java + + ternary-operators: - match: '\?' scope: keyword.operator.ternary.java push: ternary-expression @@ -3362,10 +3356,6 @@ contexts: ###[ PROTOTYPES ]############################################################## - prototype: - - include: comments - - include: illegal-keywords - annotation-else-pop: - include: annotations - include: else-pop @@ -3473,3 +3463,108 @@ contexts: stray-group: - match: \) scope: invalid.illegal.stray.java + +###[ VARIABLES ]############################################################### + +variables: + shebang_language: \b(?:bsh|java)\b + + # Reserved keywords + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls-3.9 + reserved_words: |- + (?x: + {{keywords}} + | {{storage_types}} + | {{storage_modifiers}} + | {{constants}} + | {{variables}} + ) + keywords: |- + (?x: + {{declaration_keywords}} + | {{control_keywords}} + | {{operator_keywords}} + | {{illegal_keywords}} + ) + declaration_keywords: |- + (?x: class | enum | @?interface | var | void | extends | implements | import | package ) + control_keywords: |- + (?x: assert | break | case | catch | continue | do | else | finally | for + | if | return | switch | throw | throws | try | while | yield ) + operator_keywords: |- + (?x: new | instanceof ) + illegal_keywords: |- + (?x: const | goto ) + + # Storage Modifiers + storage_modifiers: |- + (?x: + {{class_modifier}} + | {{class_no_modifier}} + ) + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.1.1 + class_modifier: |- + (?x: public | protected | private | abstract | final | sealed | static | strictfp ) + class_no_modifier: |- + (?x: default | native | synchronized | transient | volatile ) + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.8 + constructor_modifier: |- + (?x: public | protected | private ) + constructor_no_modifier: |- + (?x: abstract | default | final | native | sealed | static | strictfp | synchronized | transient | volatile ) + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.3.1 + field_modifier: |- + (?x: public | protected | private | final | static | transient | volatile ) + field_no_modifier: |- + (?x: abstract | default | native | sealed | strictfp | synchronized ) + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-9.1.1 + interface_modifier: |- + (?x: public | protected | private | abstract | sealed | static | strictfp ) + interface_no_modifier: |- + (?x: default | final | native | synchronized | transient | volatile ) + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.4.3 + # https://docs.oracle.com/javase/specs/jls/se13/html/jls-9.html#jls-9.4 + method_modifier: |- + (?x: public | protected | private | abstract | default | final | native | static | strictfp | synchronized ) + method_no_modifier: |- + (?x: sealed | transient | volatile ) + + # Storage Types + storage_types: |- + (?x: boolean | byte | char | short | int | float | long | double ) + + # Literals + constants: |- + (?x: false | null | true ) + variables: |- + (?x: _ | super | this ) + + # Identifiers + break: (?!{{id_char}}) + + identifier: (?!{{reserved_words}}[^{{id_char}}]){{id}} + + id: (?:{{id_first_char}}{{id_char}}*) + id_first_char: '[\p{L}_$]' + id_char: '[\p{L}\p{N}_$]' + + classcase_id: (?:\p{Lu}{{id_char}}*) + lowercase_id: (?:[_$]*\p{Ll}[\p{Ll}\p{N}_$]*{{break}}) + uppercase_id: (?:[_$]*\p{Lu}[\p{Lu}\p{N}_$]*{{break}}) + + # digits + bin_digit: '[01_]' + oct_digit: '[0-7_]' + dec_digit: '[\d_]' + hex_digit: '[\h_]' + dec_exponent: '[eE][-+]?{{dec_digit}}*' + hex_exponent: '[pP][-+]?{{dec_digit}}*' + float_suffix: '[dDfF]{{break}}' + int_suffix: '[lL]{{break}}' + + escape_octal: \\[0-3]?[0-7]{1,2} + escape_other: \\[btnfr"'\\] + escape_unicode: \\u+\h{4} + + # accessor but no variadic operator + single_dot: \.(?!\.) diff --git a/Java/Ant.sublime-build b/Java/Java/Ant.sublime-build similarity index 100% rename from Java/Ant.sublime-build rename to Java/Java/Ant.sublime-build diff --git a/Java/Java - Comments.tmPreferences b/Java/Java/Comments.tmPreferences similarity index 100% rename from Java/Java - Comments.tmPreferences rename to Java/Java/Comments.tmPreferences diff --git a/Java/Java - Completion Rules.tmPreferences b/Java/Java/Completion Rules.tmPreferences similarity index 100% rename from Java/Java - Completion Rules.tmPreferences rename to Java/Java/Completion Rules.tmPreferences diff --git a/Java/Embeddings/CSS (for JSP).sublime-syntax b/Java/Java/Embeddings/CSS (for JSP).sublime-syntax similarity index 100% rename from Java/Embeddings/CSS (for JSP).sublime-syntax rename to Java/Java/Embeddings/CSS (for JSP).sublime-syntax diff --git a/Java/Embeddings/JSON (for JSP).sublime-syntax b/Java/Java/Embeddings/JSON (for JSP).sublime-syntax similarity index 100% rename from Java/Embeddings/JSON (for JSP).sublime-syntax rename to Java/Java/Embeddings/JSON (for JSP).sublime-syntax diff --git a/Java/Embeddings/Java (for HTML).sublime-syntax b/Java/Java/Embeddings/Java (for HTML).sublime-syntax similarity index 100% rename from Java/Embeddings/Java (for HTML).sublime-syntax rename to Java/Java/Embeddings/Java (for HTML).sublime-syntax diff --git a/Java/Embeddings/Java (for JSP).sublime-syntax b/Java/Java/Embeddings/Java (for JSP).sublime-syntax similarity index 100% rename from Java/Embeddings/Java (for JSP).sublime-syntax rename to Java/Java/Embeddings/Java (for JSP).sublime-syntax diff --git a/Java/Embeddings/JavaDoc.sublime-syntax b/Java/Java/Embeddings/JavaDoc.sublime-syntax similarity index 100% rename from Java/Embeddings/JavaDoc.sublime-syntax rename to Java/Java/Embeddings/JavaDoc.sublime-syntax diff --git a/Java/Embeddings/JavaScript (for JSP).sublime-syntax b/Java/Java/Embeddings/JavaScript (for JSP).sublime-syntax similarity index 100% rename from Java/Embeddings/JavaScript (for JSP).sublime-syntax rename to Java/Java/Embeddings/JavaScript (for JSP).sublime-syntax diff --git a/Java/Fold.tmPreferences b/Java/Java/Fold.tmPreferences similarity index 60% rename from Java/Fold.tmPreferences rename to Java/Java/Fold.tmPreferences index ddbac01964..97a473c2c5 100644 --- a/Java/Fold.tmPreferences +++ b/Java/Java/Fold.tmPreferences @@ -7,6 +7,24 @@ foldScopes + + begin + punctuation.definition.comment.begin + end + punctuation.definition.comment.end + + + begin + punctuation.definition.string.begin + end + punctuation.definition.string.end + + + begin + punctuation.definition.generic.begin + end + punctuation.definition.generic.end + begin punctuation.section.block.begin @@ -32,6 +50,8 @@ punctuation.section.group.end + indentationFoldingEnabled + diff --git a/Java/Java - Indentation Rules (Comments).tmPreferences b/Java/Java/Indentation Rules (Comments).tmPreferences similarity index 100% rename from Java/Java - Indentation Rules (Comments).tmPreferences rename to Java/Java/Indentation Rules (Comments).tmPreferences diff --git a/Java/Java - Indentation Rules.tmPreferences b/Java/Java/Indentation Rules.tmPreferences similarity index 100% rename from Java/Java - Indentation Rules.tmPreferences rename to Java/Java/Indentation Rules.tmPreferences diff --git a/Java/JavaC.sublime-build b/Java/Java/JavaC.sublime-build similarity index 100% rename from Java/JavaC.sublime-build rename to Java/Java/JavaC.sublime-build diff --git a/Java/Snippets/abstract.sublime-snippet b/Java/Java/Snippets/abstract.sublime-snippet similarity index 100% rename from Java/Snippets/abstract.sublime-snippet rename to Java/Java/Snippets/abstract.sublime-snippet diff --git a/Java/Snippets/assert.sublime-snippet b/Java/Java/Snippets/assert.sublime-snippet similarity index 100% rename from Java/Snippets/assert.sublime-snippet rename to Java/Java/Snippets/assert.sublime-snippet diff --git a/Java/Snippets/break.sublime-snippet b/Java/Java/Snippets/break.sublime-snippet similarity index 100% rename from Java/Snippets/break.sublime-snippet rename to Java/Java/Snippets/break.sublime-snippet diff --git a/Java/Snippets/case.sublime-snippet b/Java/Java/Snippets/case.sublime-snippet similarity index 100% rename from Java/Snippets/case.sublime-snippet rename to Java/Java/Snippets/case.sublime-snippet diff --git a/Java/Snippets/catch.sublime-snippet b/Java/Java/Snippets/catch.sublime-snippet similarity index 100% rename from Java/Snippets/catch.sublime-snippet rename to Java/Java/Snippets/catch.sublime-snippet diff --git a/Java/Snippets/class.sublime-snippet b/Java/Java/Snippets/class.sublime-snippet similarity index 100% rename from Java/Snippets/class.sublime-snippet rename to Java/Java/Snippets/class.sublime-snippet diff --git a/Java/Snippets/constant-string.sublime-snippet b/Java/Java/Snippets/constant-string.sublime-snippet similarity index 100% rename from Java/Snippets/constant-string.sublime-snippet rename to Java/Java/Snippets/constant-string.sublime-snippet diff --git a/Java/Snippets/constant.sublime-snippet b/Java/Java/Snippets/constant.sublime-snippet similarity index 100% rename from Java/Snippets/constant.sublime-snippet rename to Java/Java/Snippets/constant.sublime-snippet diff --git a/Java/Snippets/default.sublime-snippet b/Java/Java/Snippets/default.sublime-snippet similarity index 100% rename from Java/Snippets/default.sublime-snippet rename to Java/Java/Snippets/default.sublime-snippet diff --git a/Java/Snippets/else-if.sublime-snippet b/Java/Java/Snippets/else-if.sublime-snippet similarity index 100% rename from Java/Snippets/else-if.sublime-snippet rename to Java/Java/Snippets/else-if.sublime-snippet diff --git a/Java/Snippets/else.sublime-snippet b/Java/Java/Snippets/else.sublime-snippet similarity index 100% rename from Java/Snippets/else.sublime-snippet rename to Java/Java/Snippets/else.sublime-snippet diff --git a/Java/Snippets/final.sublime-snippet b/Java/Java/Snippets/final.sublime-snippet similarity index 100% rename from Java/Snippets/final.sublime-snippet rename to Java/Java/Snippets/final.sublime-snippet diff --git a/Java/Snippets/for-(each).sublime-snippet b/Java/Java/Snippets/for-(each).sublime-snippet similarity index 100% rename from Java/Snippets/for-(each).sublime-snippet rename to Java/Java/Snippets/for-(each).sublime-snippet diff --git a/Java/Snippets/for.sublime-snippet b/Java/Java/Snippets/for.sublime-snippet similarity index 100% rename from Java/Snippets/for.sublime-snippet rename to Java/Java/Snippets/for.sublime-snippet diff --git a/Java/Snippets/if.sublime-snippet b/Java/Java/Snippets/if.sublime-snippet similarity index 100% rename from Java/Snippets/if.sublime-snippet rename to Java/Java/Snippets/if.sublime-snippet diff --git a/Java/Snippets/import-junit_framework_TestCase;.sublime-snippet b/Java/Java/Snippets/import-junit_framework_TestCase;.sublime-snippet similarity index 100% rename from Java/Snippets/import-junit_framework_TestCase;.sublime-snippet rename to Java/Java/Snippets/import-junit_framework_TestCase;.sublime-snippet diff --git a/Java/Snippets/import.sublime-snippet b/Java/Java/Snippets/import.sublime-snippet similarity index 100% rename from Java/Snippets/import.sublime-snippet rename to Java/Java/Snippets/import.sublime-snippet diff --git a/Java/Snippets/interface.sublime-snippet b/Java/Java/Snippets/interface.sublime-snippet similarity index 100% rename from Java/Snippets/interface.sublime-snippet rename to Java/Java/Snippets/interface.sublime-snippet diff --git a/Java/Snippets/java_beans_.sublime-snippet b/Java/Java/Snippets/java_beans_.sublime-snippet similarity index 100% rename from Java/Snippets/java_beans_.sublime-snippet rename to Java/Java/Snippets/java_beans_.sublime-snippet diff --git a/Java/Snippets/java_io.sublime-snippet b/Java/Java/Snippets/java_io.sublime-snippet similarity index 100% rename from Java/Snippets/java_io.sublime-snippet rename to Java/Java/Snippets/java_io.sublime-snippet diff --git a/Java/Snippets/java_math.sublime-snippet b/Java/Java/Snippets/java_math.sublime-snippet similarity index 100% rename from Java/Snippets/java_math.sublime-snippet rename to Java/Java/Snippets/java_math.sublime-snippet diff --git a/Java/Snippets/java_net_.sublime-snippet b/Java/Java/Snippets/java_net_.sublime-snippet similarity index 100% rename from Java/Snippets/java_net_.sublime-snippet rename to Java/Java/Snippets/java_net_.sublime-snippet diff --git a/Java/Snippets/java_util_.sublime-snippet b/Java/Java/Snippets/java_util_.sublime-snippet similarity index 100% rename from Java/Snippets/java_util_.sublime-snippet rename to Java/Java/Snippets/java_util_.sublime-snippet diff --git a/Java/Snippets/method-(main).sublime-snippet b/Java/Java/Snippets/method-(main).sublime-snippet similarity index 100% rename from Java/Snippets/method-(main).sublime-snippet rename to Java/Java/Snippets/method-(main).sublime-snippet diff --git a/Java/Snippets/method.sublime-snippet b/Java/Java/Snippets/method.sublime-snippet similarity index 100% rename from Java/Snippets/method.sublime-snippet rename to Java/Java/Snippets/method.sublime-snippet diff --git a/Java/Snippets/package.sublime-snippet b/Java/Java/Snippets/package.sublime-snippet similarity index 100% rename from Java/Snippets/package.sublime-snippet rename to Java/Java/Snippets/package.sublime-snippet diff --git a/Java/Snippets/print.sublime-snippet b/Java/Java/Snippets/print.sublime-snippet similarity index 100% rename from Java/Snippets/print.sublime-snippet rename to Java/Java/Snippets/print.sublime-snippet diff --git a/Java/Snippets/println.sublime-snippet b/Java/Java/Snippets/println.sublime-snippet similarity index 100% rename from Java/Snippets/println.sublime-snippet rename to Java/Java/Snippets/println.sublime-snippet diff --git a/Java/Snippets/private.sublime-snippet b/Java/Java/Snippets/private.sublime-snippet similarity index 100% rename from Java/Snippets/private.sublime-snippet rename to Java/Java/Snippets/private.sublime-snippet diff --git a/Java/Snippets/protected.sublime-snippet b/Java/Java/Snippets/protected.sublime-snippet similarity index 100% rename from Java/Snippets/protected.sublime-snippet rename to Java/Java/Snippets/protected.sublime-snippet diff --git a/Java/Snippets/public.sublime-snippet b/Java/Java/Snippets/public.sublime-snippet similarity index 100% rename from Java/Snippets/public.sublime-snippet rename to Java/Java/Snippets/public.sublime-snippet diff --git a/Java/Snippets/return.sublime-snippet b/Java/Java/Snippets/return.sublime-snippet similarity index 100% rename from Java/Snippets/return.sublime-snippet rename to Java/Java/Snippets/return.sublime-snippet diff --git a/Java/Snippets/static.sublime-snippet b/Java/Java/Snippets/static.sublime-snippet similarity index 100% rename from Java/Snippets/static.sublime-snippet rename to Java/Java/Snippets/static.sublime-snippet diff --git a/Java/Snippets/switch.sublime-snippet b/Java/Java/Snippets/switch.sublime-snippet similarity index 100% rename from Java/Snippets/switch.sublime-snippet rename to Java/Java/Snippets/switch.sublime-snippet diff --git a/Java/Snippets/synchronized.sublime-snippet b/Java/Java/Snippets/synchronized.sublime-snippet similarity index 100% rename from Java/Snippets/synchronized.sublime-snippet rename to Java/Java/Snippets/synchronized.sublime-snippet diff --git a/Java/Snippets/test-case.sublime-snippet b/Java/Java/Snippets/test-case.sublime-snippet similarity index 100% rename from Java/Snippets/test-case.sublime-snippet rename to Java/Java/Snippets/test-case.sublime-snippet diff --git a/Java/Snippets/test.sublime-snippet b/Java/Java/Snippets/test.sublime-snippet similarity index 100% rename from Java/Snippets/test.sublime-snippet rename to Java/Java/Snippets/test.sublime-snippet diff --git a/Java/Snippets/throw.sublime-snippet b/Java/Java/Snippets/throw.sublime-snippet similarity index 100% rename from Java/Snippets/throw.sublime-snippet rename to Java/Java/Snippets/throw.sublime-snippet diff --git a/Java/Snippets/variable.sublime-snippet b/Java/Java/Snippets/variable.sublime-snippet similarity index 100% rename from Java/Snippets/variable.sublime-snippet rename to Java/Java/Snippets/variable.sublime-snippet diff --git a/Java/Snippets/while.sublime-snippet b/Java/Java/Snippets/while.sublime-snippet similarity index 100% rename from Java/Snippets/while.sublime-snippet rename to Java/Java/Snippets/while.sublime-snippet diff --git a/Java/Symbol List - Case Label.tmPreferences b/Java/Java/Symbol List - Case Label.tmPreferences similarity index 100% rename from Java/Symbol List - Case Label.tmPreferences rename to Java/Java/Symbol List - Case Label.tmPreferences diff --git a/Java/Symbol List - Classes.tmPreferences b/Java/Java/Symbol List - Classes.tmPreferences similarity index 100% rename from Java/Symbol List - Classes.tmPreferences rename to Java/Java/Symbol List - Classes.tmPreferences diff --git a/Java/Symbol List - Constants.tmPreferences b/Java/Java/Symbol List - Constants.tmPreferences similarity index 100% rename from Java/Symbol List - Constants.tmPreferences rename to Java/Java/Symbol List - Constants.tmPreferences diff --git a/Java/Symbol List - Enums.tmPreferences b/Java/Java/Symbol List - Enums.tmPreferences similarity index 100% rename from Java/Symbol List - Enums.tmPreferences rename to Java/Java/Symbol List - Enums.tmPreferences diff --git a/Java/Symbol List - Fields.tmPreferences b/Java/Java/Symbol List - Fields.tmPreferences similarity index 100% rename from Java/Symbol List - Fields.tmPreferences rename to Java/Java/Symbol List - Fields.tmPreferences diff --git a/Java/Symbol List - Imports.tmPreferences b/Java/Java/Symbol List - Imports.tmPreferences similarity index 100% rename from Java/Symbol List - Imports.tmPreferences rename to Java/Java/Symbol List - Imports.tmPreferences diff --git a/Java/Symbol List - Interfaces.tmPreferences b/Java/Java/Symbol List - Interfaces.tmPreferences similarity index 100% rename from Java/Symbol List - Interfaces.tmPreferences rename to Java/Java/Symbol List - Interfaces.tmPreferences diff --git a/Java/Symbol List - Modules.tmPreferences b/Java/Java/Symbol List - Modules.tmPreferences similarity index 77% rename from Java/Symbol List - Modules.tmPreferences rename to Java/Java/Symbol List - Modules.tmPreferences index b29b7d7715..4830243ea7 100644 --- a/Java/Symbol List - Modules.tmPreferences +++ b/Java/Java/Symbol List - Modules.tmPreferences @@ -2,7 +2,7 @@ scope - source.java meta.namespace.module.identifier & (meta.path, entity.name.namespace) + settings showInSymbolList diff --git a/Java/Symbol List - Packages.tmPreferences b/Java/Java/Symbol List - Packages.tmPreferences similarity index 77% rename from Java/Symbol List - Packages.tmPreferences rename to Java/Java/Symbol List - Packages.tmPreferences index 666feab98f..65b37212d8 100644 --- a/Java/Symbol List - Packages.tmPreferences +++ b/Java/Java/Symbol List - Packages.tmPreferences @@ -2,7 +2,7 @@ scope - source.java meta.namespace.package.identifier & (meta.path, entity.name.namespace) + settings showInSymbolList diff --git a/Java/tests/syntax_test_java.java b/Java/Java/tests/syntax_test_java.java similarity index 98% rename from Java/tests/syntax_test_java.java rename to Java/Java/tests/syntax_test_java.java index ee18a0331f..fb1df3c5b6 100644 --- a/Java/tests/syntax_test_java.java +++ b/Java/Java/tests/syntax_test_java.java @@ -466,92 +466,6 @@ // ^^ comment.block.documentation.java punctuation.definition.comment.end.java -/****************************************************************************** - * Git Conflict Marker Tests - *****************************************************************************/ - -<<<<<<< HEAD -// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff -//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff -// ^ meta.block.conflict.begin.diff - entity - punctuation -// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff -// ^ meta.block.conflict.begin.diff - entity - punctuation - -======= -// <- meta.block.conflict.separator.diff punctuation.section.block.diff -//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff -// ^ meta.block.conflict.separator.diff - punctuation - ->>>>>>> master -// <- meta.block.conflict.end.diff punctuation.section.block.end.diff -//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff -// ^ meta.block.conflict.end.diff - entity - punctuation -// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff -// ^ meta.block.conflict.end.diff - entity - punctuation - -/* merge conflict in blocks */ - -{ -// <- meta.block.java punctuation.section.block.begin.java -<<<<<<< HEAD -// <- meta.block.java meta.block.conflict.begin.diff punctuation.section.block.begin.diff -//^^^^^ meta.block.java meta.block.conflict.begin.diff punctuation.section.block.begin.diff -// ^ meta.block.java meta.block.conflict.begin.diff - entity - punctuation -// ^^^^ meta.block.java meta.block.conflict.begin.diff entity.name.section.diff -// ^ meta.block.java meta.block.conflict.begin.diff - entity - punctuation - -======= -// <- meta.block.java meta.block.conflict.separator.diff punctuation.section.block.diff -//^^^^^ meta.block.java meta.block.conflict.separator.diff punctuation.section.block.diff -// ^ meta.block.java meta.block.conflict.separator.diff - punctuation - ->>>>>>> master -// <- meta.block.java meta.block.conflict.end.diff punctuation.section.block.end.diff -//^^^^^ meta.block.java meta.block.conflict.end.diff punctuation.section.block.end.diff -// ^ meta.block.java meta.block.conflict.end.diff - entity - punctuation -// ^^^^^^ meta.block.java meta.block.conflict.end.diff entity.name.section.diff -// ^ meta.block.java meta.block.conflict.end.diff - entity - punctuation -} -// <- meta.block.java punctuation.section.block.end.java - -/* merge conflict in multiline strings */ - -string = """ -before -<<<<<<< HEAD -// <- meta.string.java meta.block.conflict.begin.diff punctuation.section.block.begin.diff -//^^^^^ meta.string.java meta.block.conflict.begin.diff punctuation.section.block.begin.diff -// ^ meta.string.java meta.block.conflict.begin.diff - entity - punctuation -// ^^^^ meta.string.java meta.block.conflict.begin.diff entity.name.section.diff -// ^ meta.string.java meta.block.conflict.begin.diff - entity - punctuation -ours -// <- meta.string.java string.quoted.triple.java -//^^ meta.string.java string.quoted.triple.java -======= -// <- meta.string.java meta.block.conflict.separator.diff punctuation.section.block.diff -//^^^^^ meta.string.java meta.block.conflict.separator.diff punctuation.section.block.diff -// ^ meta.string.java meta.block.conflict.separator.diff - punctuation -theirs -// <- meta.string.java string.quoted.triple.java -//^^^^ meta.string.java string.quoted.triple.java -||||||| -base -// <- meta.string.java string.quoted.triple.java -//^^ meta.string.java string.quoted.triple.java ->>>>>>> master -// <- meta.string.java meta.block.conflict.end.diff punctuation.section.block.end.diff -//^^^^^ meta.string.java meta.block.conflict.end.diff punctuation.section.block.end.diff -// ^ meta.string.java meta.block.conflict.end.diff - entity - punctuation -// ^^^^^^ meta.string.java meta.block.conflict.end.diff entity.name.section.diff -// ^ meta.string.java meta.block.conflict.end.diff - entity - punctuation -after -// <- meta.string.java string.quoted.triple.java -//^^^ meta.string.java string.quoted.triple.java -""" -// <- meta.string.java string.quoted.triple.java punctuation.definition.string.end.java -//^ meta.string.java string.quoted.triple.java punctuation.definition.string.end.java - - /****************************************************************************** * Package Declaration Tests *****************************************************************************/ @@ -5668,7 +5582,7 @@ void run() { // ^^ keyword.control.conditional.if.java // ^ punctuation.section.group.begin.java // ^^^ variable.function.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^ constant.language.boolean.true.java // ^ punctuation.section.group.end.java // ^^^ variable.function.java @@ -5769,12 +5683,12 @@ void run() { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.statement.conditional.assertion.java // ^^^^^^ keyword.control.flow.assert.java // ^^^^^ variable.other.java -// ^ keyword.operator.comparison.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.relational.greater.java +// ^ keyword.operator.arithmetic.subtraction.java // ^^^ constant.numeric.value.java // ^ punctuation.separator.expressions.java // ^^^ variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^ constant.language.boolean.true.java // ^ punctuation.terminator.java @@ -5954,7 +5868,7 @@ void run() { // ^ punctuation.definition.string.begin.java // ^^ constant.character.escape.other.java // ^ punctuation.definition.string.end.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^^ variable.function.java // ^ punctuation.separator.expressions.java @@ -5966,7 +5880,7 @@ void run() { // ^ meta.statement.conditional.switch.java meta.block.java - meta.statement.conditional.case // ^^^^ keyword.control.conditional.case.java // ^^^^^^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.separator.expressions.java @@ -5980,7 +5894,7 @@ void run() { // ^^^^ keyword.control.conditional.case.java // ^ punctuation.section.group.begin.java // ^^^^^^^^ variable.other.java -// ^^ keyword.operator.bitwise.java +// ^^ keyword.operator.bitwise.shift.left.signed.java // ^^ meta.number.integer.hexadecimal.java constant.numeric.base.java // ^ meta.number.integer.hexadecimal.java constant.numeric.value.java // ^ punctuation.section.group.end.java @@ -6376,7 +6290,7 @@ void testClassicCaseLabels(boolean startWeek) { // ^^^^^^^^^^^^^^^^^^^^^ support.class.java // ^ punctuation.section.group.begin.java // ^^^^^^^^^^^^^^^ string.quoted.double.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^^ variable.other.java // ^ punctuation.section.group.end.java // ^ punctuation.terminator.java @@ -6486,7 +6400,7 @@ void testPatternCaseLabelsWithGuards(Object o) { // ^ meta.variable.identifier.java variable.other.java // ^ punctuation.accessor.dot.java // ^^^^^^ variable.function.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^^^^ constant.other.java // ^^ punctuation.separator.expressions.java // ^^^^^^^^^^ string.quoted.double.java @@ -6508,7 +6422,7 @@ void testPatternCaseLabelsWithGuards(Object o) { // ^ variable.other.java // ^ punctuation.accessor.dot.java // ^^^^^^ variable.function.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.greater.java // ^^^^^^^ constant.other.java // ^^ punctuation.separator.expressions.java System.out.println("weekend"); @@ -6532,14 +6446,14 @@ void testPatternCaseLabelsWithGuards(Object o) { // ^ variable.other.java // ^^^^ keyword.control.conditional.when.java // ^ variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^^^^ constant.other.java // ^ punctuation.separator.comma.java // ^^^^ support.class.java // ^ variable.other.java // ^^^^ keyword.control.conditional.when.java // ^ variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^ support.class.java // ^ punctuation.accessor.dot.java // ^^^^^^ constant.other.java @@ -6580,13 +6494,13 @@ void testPatternCaseLabelsWithGuards(Object o) { // ^^ punctuation.section.group.end.java // ^^^^ keyword.control.conditional.when.java // ^ meta.variable.identifier.java variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^ meta.number.integer.decimal.java constant.numeric.value.java // ^^ punctuation.separator.expressions.java // ^ meta.variable.identifier.java variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ meta.variable.identifier.java variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ meta.variable.identifier.java variable.other.java // ^ punctuation.terminator.java }; @@ -6766,11 +6680,11 @@ void run() { // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -6791,11 +6705,11 @@ void run() { // ^ punctuation.separator.comma.java // ^ constant.numeric.value.java // ^ punctuation.terminator.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^^ constant.numeric.value.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ punctuation.terminator.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ constant.numeric.value.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -6817,16 +6731,17 @@ void run() { // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ meta.number.integer.decimal.java constant.numeric.value.java +// ^^ keyword.operator.arithmetic.increment.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -6843,11 +6758,11 @@ void run() { // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -6868,11 +6783,11 @@ void run() { // ^ punctuation.separator.comma.java // ^ constant.numeric.value.java // ^ punctuation.terminator.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^^ constant.numeric.value.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ punctuation.terminator.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ constant.numeric.value.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -6895,15 +6810,15 @@ void run() { // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less..java // ^^ meta.number.integer.decimal.java constant.numeric.value.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less..java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java // ^ variable.other.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -7200,7 +7115,7 @@ void run() { // ^ - meta.statement.flow.return // ^^^^^^ keyword.control.flow.return.java // ^^^^^^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^^^ variable.function.java // ^ punctuation.section.group.begin.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java @@ -7216,7 +7131,7 @@ void run() { // ^^^^^^^^ variable.other.java + // ^^^ meta.statement.flow.return.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java func // ^^^^^^ meta.statement.flow.return.java // ^^^^ variable.function.java @@ -7259,7 +7174,7 @@ void run() { // ^ punctuation.section.group.end.java // ^^ keyword.declaration.function.arrow.java // ^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ variable.other.java // ^ punctuation.terminator.java } @@ -7304,7 +7219,7 @@ void run() { // ^ - meta.statement.flow.throw // ^^^^^ keyword.control.flow.throw.java // ^^^^^^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^^^ variable.function.java // ^ punctuation.section.group.begin.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java @@ -7320,7 +7235,7 @@ void run() { // ^^^^^^^^ variable.other.java + // ^^^ meta.statement.flow.throw.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java func // ^^^^^^ meta.statement.flow.throw.java // ^^^^ variable.function.java @@ -7363,7 +7278,7 @@ void run() { // ^ punctuation.section.group.end.java // ^^ keyword.declaration.function.arrow.java // ^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ variable.other.java // ^ punctuation.terminator.java } @@ -8304,7 +8219,7 @@ public void instantiateClassesObjects() { // ^^ invalid.illegal.unexpected-keyword.java // ^ punctuation.section.group.begin.java // ^^^ variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^^^^ constant.language.boolean.true.java // ^ punctuation.section.group.end.java // ^ punctuation.section.block.begin.java @@ -8499,7 +8414,7 @@ public void instantiateObjectArrays() { // ^^^^^ variable.annotation.java // ^ punctuation.section.brackets.begin.java // ^^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.section.brackets.end.java // ^ punctuation.definition.annotation.java @@ -8527,7 +8442,7 @@ public void instantiateObjectArrays() { // ^^^^^ variable.annotation.java // ^ punctuation.section.brackets.begin.java // ^^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.section.brackets.end.java // ^ punctuation.definition.annotation.java @@ -9157,7 +9072,7 @@ void primitiveTypeCastExpression() { // ^ punctuation.section.group.end.java // ^ punctuation.section.group.begin.java // ^^^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^^ constant.numeric.value.java // ^ punctuation.section.group.end.java @@ -9177,7 +9092,7 @@ void primitiveTypeCastExpression() { // ^^^ storage.type.primitive.java // ^^ storage.modifier.array.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.logical.java +// ^ keyword.operator.logical.not.java // ^^^ variable.other.java (int[]) ~ foo; @@ -9187,7 +9102,7 @@ void primitiveTypeCastExpression() { // ^^^ storage.type.primitive.java // ^^ storage.modifier.array.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.bitwise.java +// ^ keyword.operator.bitwise.not.java // ^^^ variable.other.java (var) foo; @@ -9286,7 +9201,7 @@ void genericTypeCastExpression() { // ^ punctuation.definition.generic.begin.java // ^ support.class.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.bitwise.java +// ^ keyword.operator.bitwise.not.java // ^^^ variable.other.java (List) foo; @@ -9418,7 +9333,7 @@ void noCastExpressionsTests() { // ^^^^^^^ meta.group.java // ^ punctuation.section.group.begin.java // ^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ variable.other.java // ^ punctuation.section.group.end.java // ^^^ variable.other.java @@ -9427,10 +9342,10 @@ void noCastExpressionsTests() { // ^^^^^^^ meta.group.java // ^ punctuation.section.group.begin.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less..java // ^ variable.other.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.bitwise.java +// ^ keyword.operator.bitwise.and.java // ^^^ variable.other.java (0) foo; @@ -9666,12 +9581,12 @@ void instanceofPatternsTests () { // ^^^^^^^^^^ keyword.other.storage.instanceof.java // ^^^^^^ support.class.java // ^ variable.other.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ variable.other.java // ^ punctuation.accessor.dot.java // ^^^^^^ variable.function.java // ^^ meta.group.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.greater.java // ^ constant.numeric.value.java obj instanceof ( String[] s ) s == 5 @@ -9686,7 +9601,7 @@ obj instanceof ( String[] s ) s == 5 // ^ variable.other.java // ^ punctuation.section.group.end.java // ^ variable.other.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java // ^ constant.numeric.value.java } //^ meta.class.java meta.block.java meta.function.java meta.block.java punctuation.section.block.end.java @@ -9752,12 +9667,12 @@ obj instanceof (Record(boolean a, (var b), Foo(int c) d) e) f && s.length() > 5 // ^ punctuation.section.group.end.java // ^ punctuation.section.group.end.java // ^ variable.other.java -// ^^ keyword.operator.logical.java +// ^^ keyword.operator.logical.and.java // ^ variable.other.java // ^ punctuation.accessor.dot.java // ^^^^^^ variable.function.java // ^^ meta.group.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.greater.java // ^ constant.numeric.value.java } //^ meta.class.java meta.block.java meta.function.java meta.block.java punctuation.section.block.end.java @@ -9926,7 +9841,7 @@ void anonymousFunctions() { // ^^^ storage.type.primitive.java // ^ punctuation.section.group.end.java // ^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ punctuation.section.group.begin.java // ^ variable.parameter.java // ^ punctuation.separator.comma.java @@ -9953,7 +9868,7 @@ void anonymousFunctions() { // ^^^ storage.type.primitive.java // ^ punctuation.section.group.end.java // ^ variable.other.java -// ^ keyword.operator.arithmetic.java +// ^ keyword.operator.arithmetic.addition.java // ^ punctuation.section.group.begin.java // ^ variable.parameter.java // ^ punctuation.separator.comma.java @@ -10401,64 +10316,64 @@ public static void main(String[] args, String moreArgs, a.b.c.Foo bar) {} int operatorsTests() { == != <= >= <> < > -// ^^ keyword.operator.comparison.java -// ^^ keyword.operator.comparison.java -// ^^ keyword.operator.comparison.java -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java +// ^^ keyword.operator.comparison.not-equal.value.java +// ^^ keyword.operator.relational.less-equal.java +// ^^ keyword.operator.relational.greater-equal.java // ^^ keyword.operator.comparison.java -// ^ keyword.operator.comparison.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java +// ^ keyword.operator.relational.greater.java ! && || -// ^ keyword.operator.logical.java -// ^^ keyword.operator.logical.java -// ^^ keyword.operator.logical.java +// ^ keyword.operator.logical.not.java +// ^^ keyword.operator.logical.and.java +// ^^ keyword.operator.logical.or.java << >> >>> ~ & | ^ -// ^^ keyword.operator.bitwise.java -// ^^ keyword.operator.bitwise.java -// ^^^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java +// ^^ keyword.operator.bitwise.shift.left.signed.java +// ^^ keyword.operator.bitwise.shift.right.signed.java +// ^^^ keyword.operator.bitwise.shift.right.unsigned.java +// ^ keyword.operator.bitwise.not.java +// ^ keyword.operator.bitwise.and.java +// ^ keyword.operator.bitwise.or.java +// ^ keyword.operator.bitwise.xor.java ++ -- + - * / % -// ^^ keyword.operator.arithmetic.java -// ^^ keyword.operator.arithmetic.java -// ^ keyword.operator.arithmetic.java -// ^ keyword.operator.arithmetic.java -// ^ keyword.operator.arithmetic.java -// ^ keyword.operator.arithmetic.java -// ^ keyword.operator.arithmetic.java +// ^^ keyword.operator.arithmetic.increment.java +// ^^ keyword.operator.arithmetic.decrement.java +// ^ keyword.operator.arithmetic.addition.java +// ^ keyword.operator.arithmetic.subtraction.java +// ^ keyword.operator.arithmetic.multiplication.java +// ^ keyword.operator.arithmetic.division.java +// ^ keyword.operator.arithmetic.remainder.java x = (e & 1) << c^2 >> 10; // ^ keyword.operator.assignment.java -// ^ keyword.operator.bitwise.java -// ^^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java -// ^^ keyword.operator.bitwise.java +// ^ keyword.operator.bitwise.and.java +// ^^ keyword.operator.bitwise.shift.left.signed.java +// ^ keyword.operator.bitwise.xor.java +// ^^ keyword.operator.bitwise.shift.right.signed.java y = ~e >>> (c | 2); // ^ keyword.operator.assignment.java -// ^ keyword.operator.bitwise.java -// ^^^ keyword.operator.bitwise.java -// ^ keyword.operator.bitwise.java +// ^ keyword.operator.bitwise.not.java +// ^^^ keyword.operator.bitwise.shift.right.unsigned.java +// ^ keyword.operator.bitwise.or.java z += x; z -= x; z *= x; z /= x; z %= x; -// ^^ keyword.operator.assignment.augmented.java -// ^^ keyword.operator.assignment.augmented.java -// ^^ keyword.operator.assignment.augmented.java -// ^^ keyword.operator.assignment.augmented.java -// ^^ keyword.operator.assignment.augmented.java +// ^^ keyword.operator.assignment.augmented.addition.java +// ^^ keyword.operator.assignment.augmented.subtraction.java +// ^^ keyword.operator.assignment.augmented.multiplication.java +// ^^ keyword.operator.assignment.augmented.division.java +// ^^ keyword.operator.assignment.augmented.remainder.java z &= x; z ^= x; z |= x; z <<= x; z >>= x; z >>>= x; // ^^ keyword.operator.assignment.augmented.java // ^^ keyword.operator.assignment.augmented.java // ^^ keyword.operator.assignment.augmented.java -// ^^^ keyword.operator.assignment.augmented.java -// ^^^ keyword.operator.assignment.augmented.java -// ^^^^ keyword.operator.assignment.augmented.java +// ^^^ keyword.operator.assignment.augmented.bitwise.shift.left.signed.java +// ^^^ keyword.operator.assignment.augmented.bitwise.shift.right.signed.java +// ^^^^ keyword.operator.assignment.augmented.bitwise.shift.right.unsigned.java b=e.a(b b?b:b; // ^ meta.function-call.identifier.java @@ -10469,10 +10384,10 @@ int operatorsTests() { // ^ variable.function.java // ^ punctuation.section.group.begin.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^ variable.other.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.greater.java // ^ variable.other.java // ^ keyword.operator.ternary.java // ^ variable.other.java @@ -10488,10 +10403,10 @@ int operatorsTests() { // ^ variable.function.java // ^ punctuation.section.group.begin.java // ^ variable.other.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^ variable.other.java // ^ punctuation.section.group.end.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.greater.java // ^ variable.other.java // ^ keyword.operator.ternary.java // ^ variable.other.java @@ -10624,19 +10539,19 @@ int operatorsTests() { // ^ punctuation.terminator.java if (a == false) {} -// ^^ keyword.operator.comparison.java +// ^^ keyword.operator.comparison.equal.value.java if (this.scale<0) { // ^^ keyword.control.conditional.if.java // ^^^^^^^^^^^^^^ meta.group.java // ^ punctuation.section.group.begin // ^ punctuation.accessor.dot.java -// ^ keyword.operator.comparison.java +// ^ keyword.operator.relational.less.java // ^ meta.number.integer.decimal.java constant.numeric.value.java // ^ - meta.group.java return foo<<32; // ^^^^^^ keyword.control.flow.return.java -// ^^ keyword.operator.bitwise.java +// ^^ keyword.operator.bitwise.shift.left.signed.java // ^^ meta.number.integer.decimal.java constant.numeric.value.java // ^ punctuation.terminator.java } @@ -10644,7 +10559,7 @@ int operatorsTests() { return foo>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + + + String multilineMergeConflictMarkersTest = """ +<<<<<<< HEAD +// <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff + // <- meta.block.conflict.begin.diff punctuation.section.block.begin.diff +//^^^^^ meta.block.conflict.begin.diff punctuation.section.block.begin.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation +// ^^^^ meta.block.conflict.begin.diff entity.name.section.diff +// ^ meta.block.conflict.begin.diff - entity - punctuation + +======= +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + +======= branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + +||||||| +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^ meta.block.conflict.separator.diff - punctuation + +||||||| branchname +// <- meta.block.conflict.separator.diff punctuation.section.block.diff + // <- meta.block.conflict.separator.diff punctuation.section.block.diff +//^^^^^ meta.block.conflict.separator.diff punctuation.section.block.diff +// ^^^^^^^^^^^ meta.block.conflict.separator.diff - punctuation + +>>>>>>> master +// <- meta.block.conflict.end.diff punctuation.section.block.end.diff + // <- meta.block.conflict.end.diff punctuation.section.block.end.diff +//^^^^^ meta.block.conflict.end.diff punctuation.section.block.end.diff +// ^ meta.block.conflict.end.diff - entity - punctuation +// ^^^^^^ meta.block.conflict.end.diff entity.name.section.diff +// ^ meta.block.conflict.end.diff - entity - punctuation + """ + } +} diff --git a/Java/tests/syntax_test_java_indentation.java b/Java/Java/tests/syntax_test_java_indentation.java similarity index 100% rename from Java/tests/syntax_test_java_indentation.java rename to Java/Java/tests/syntax_test_java_indentation.java diff --git a/Java/tests/syntax_test_java_properties.properties b/Java/Java/tests/syntax_test_java_properties.properties similarity index 100% rename from Java/tests/syntax_test_java_properties.properties rename to Java/Java/tests/syntax_test_java_properties.properties diff --git a/Java/tests/syntax_test_jsp.jsp b/Java/Java/tests/syntax_test_jsp.jsp similarity index 99% rename from Java/tests/syntax_test_jsp.jsp rename to Java/Java/tests/syntax_test_jsp.jsp index 9e74b5bf1b..f167959769 100644 --- a/Java/tests/syntax_test_jsp.jsp +++ b/Java/Java/tests/syntax_test_jsp.jsp @@ -369,8 +369,8 @@ // ^ source.java.embedded.jsp - source.java source.java if (!foo && !bar) { // ^^ keyword.control.conditional.if.java -// ^ keyword.operator.logical.java -// ^^ keyword.operator.logical.java +// ^ keyword.operator.logical.not.java +// ^^ keyword.operator.logical.and.java %>
<% // ^^ punctuation.section.embedded.end.jsp - source.java.embedded.jsp // ^^^^^ meta.tag.block.any.html - meta.attribute-with-value diff --git a/Java/Symbol List - Properties.tmPreferences b/Java/JavaProperties - Symbol List.tmPreferences similarity index 100% rename from Java/Symbol List - Properties.tmPreferences rename to Java/JavaProperties - Symbol List.tmPreferences