@@ -131,9 +131,9 @@ contexts:
131131 scope: keyword.control.pseudo-method.crystal
132132 - match: '\b(nil|true|false)\b(?![?!])'
133133 scope: constant.language.crystal
134− - match: '\b(__(DIR|FILE|LINE)__|self)\b(?![?!])'
134+ - match: '\b(__(DIR|FILE|LINE|END_LINE)__|self)\b(?![?!])'
135135 scope: variable.language.crystal
136− - match: '\b(initialize|new|loop|include|extend|raise|getter|setter|property|class_getter|class_setter|class_property|describe|it|with|delegate|def_hash|def_equals|def_equals_and_hash|forward_missing_to|record|assert_responds_to|spawn)\b[!?]?'
136+ - match: '\b(initialize|new|loop|include|extend|raise|getter|setter|property|class_getter|class_setter|class_property|describe|context|it|with|delegate|def_hash|def_equals|def_equals_and_hash|forward_missing_to|record|assert_responds_to|spawn|annotation|verbatim)\b[!?]?'
137137 comment: everything being a method but having a special function is a..
138138 scope: keyword.control.special-method.crystal
139139 - match: \b(require)\b
@@ -180,7 +180,7 @@ contexts:
180180 (?<=^|\s)(def)\s+ # the def keyword
181181 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>\.|::))? # a method name prefix
182182 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>[?!]|=(?!>))? # the method name
183− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
183+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) # …or an operator method
184184 \s*(\() # the openning parenthesis for arguments
185185 comment: the method pattern comes from the symbol pattern, see there for a explaination
186186 captures:
@@ -201,7 +201,7 @@ contexts:
201201 (?<=^|\s)(def)\s+ # the def keyword
202202 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
203203 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
204− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method
204+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) # …or an operator method
205205 [ \t] # the space separating the arguments
206206 (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow
207207 comment: same as the previous rule, but without parentheses around the arguments
@@ -221,7 +221,7 @@ contexts:
221221 ( \s+ # an optional group of whitespace followed by…
222222 ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix
223223 (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name
224− |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) )? # …or an operator method
224+ |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?) ) )? # …or an operator method
225225 comment: the optional name is just to catch the def also without a method-name
226226 scope: meta.function.method.without-arguments.crystal
227227 captures:
@@ -588,7 +588,7 @@ contexts:
588588 pop: true
589589 - match: \\.
590590 comment: Cant be named because its not neccesarily an escape.
591− - match: '(?<!:)(:)(?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?|@@?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*)'
591+ - match: '(?<!:)(:)(?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\](?:=|\?)?|@@?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*|!=?(?![?!]))'
592592 comment: symbols
593593 scope: constant.other.symbol.crystal
594594 captures:
@@ -713,14 +713,14 @@ contexts:
713713 captures:
714714 0: punctuation.definition.string.begin.crystal
715715 push:
716− - meta_scope: string.unquoted.embedded.js.jquery.crystal
717− - meta_content_scope: text.js.jquery.embedded.crystal
716+ - meta_scope: string.unquoted.embedded.js.crystal
717+ - meta_content_scope: text.js.embedded.crystal
718718 - match: \s*\2$
719719 captures:
720720 0: punctuation.definition.string.end.crystal
721721 pop: true
722722 - include: heredoc
723− - include: scope:source.js.jquery
723+ - include: scope:source.js
724724 - include: interpolated_crystal
725725 - include: escaped_char
726726 - match: '(?><<-("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1)'