@@ -1,44 +1,67 @@
24− "return"
15+] @keyword
25+] @keyword.control.conditional
33+] @keyword.control.repeat
40+] @keyword.control.return
47+((identifier) @keyword.control.import
48+ (#match? @keyword.control.import "^(require|require_relative|load|autoload)$"))
31−] @keyword
54+] @keyword.operator
33−((identifier) @keyword
56+((identifier) @keyword.control.exception
34− (#match? @keyword "^(private|protected|public)$"))
57+ (#match? @keyword.control.exception "^(raise|fail)$"))
36; Function calls
59; Function calls
38−((identifier) @function.method.builtin
61+((identifier) @function.builtin
39− (#eq? @function.method.builtin "require"))
62+ (#match? @function.builtin "^(attr|attr_accessor|attr_reader|attr_writer|include|prepend|refine|private|protected|public)$"))
41−"defined?" @function.method.builtin
64+"defined?" @function.builtin
44 method: [(identifier) (constant)] @function.method)
67 method: [(identifier) (constant)] @function.method)
@@ -58,7 +81,10 @@
58] @variable.other.member
81] @variable.other.member
60((identifier) @constant.builtin
83((identifier) @constant.builtin
61− (#match? @constant.builtin "^__(FILE|LINE|ENCODING)__$"))
84+ (#match? @constant.builtin "^(__FILE__|__LINE__|__ENCODING__)$"))
86+((constant) @constant.builtin
87+ (#match? @constant.builtin "^(ENV|ARGV|ARGF|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING)$"))
63((constant) @constant
89((constant) @constant
64 (#match? @constant "^[A-Z\\d_]+$"))
90 (#match? @constant "^[A-Z\\d_]+$"))
@@ -66,22 +92,23 @@
66(constant) @constructor
92(constant) @constructor
68(self) @variable.builtin
94(self) @variable.builtin
69−(super) @variable.builtin
95+(super) @function.builtin
97+[(forward_parameter)(forward_argument)] @variable.parameter
98+(keyword_parameter name:((_)":" @variable.parameter) @variable.parameter)
99+(optional_parameter name:((_)"=" @operator) @variable.parameter)
100+(optional_parameter name: (identifier) @variable.parameter)
101+(splat_parameter name: (identifier) @variable.parameter) @variable.parameter
102+(hash_splat_parameter name: (identifier) @variable.parameter) @variable.parameter
103+(method_parameters (identifier) @variable.parameter)
71(block_parameter (identifier) @variable.parameter)
104(block_parameter (identifier) @variable.parameter)
72(block_parameters (identifier) @variable.parameter)
105(block_parameters (identifier) @variable.parameter)
73−(destructured_parameter (identifier) @variable.parameter)
74−(hash_splat_parameter (identifier) @variable.parameter)
75−(lambda_parameters (identifier) @variable.parameter)
76−(method_parameters (identifier) @variable.parameter)
77−(splat_parameter (identifier) @variable.parameter)
79−(keyword_parameter name: (identifier) @variable.parameter)
80−(optional_parameter name: (identifier) @variable.parameter)
82((identifier) @function.method
107((identifier) @function.method
83 (#is-not? local))
108 (#is-not? local))
84−(identifier) @variable
110+ (identifier)
86; Literals
113; Literals
@@ -96,10 +123,11 @@
97 (simple_symbol)
124 (simple_symbol)
98 (delimited_symbol)
125 (delimited_symbol)
100 (bare_symbol)
126 (bare_symbol)
101] @string.special.symbol
127] @string.special.symbol
129+(pair key: ((_)":" @string.special.symbol) @string.special.symbol)
103(regex) @string.regexp
131(regex) @string.regexp
104(escape_sequence) @constant.character.escape
132(escape_sequence) @constant.character.escape
@@ -112,7 +140,7 @@
115−]@constant.builtin
143+] @constant.builtin
117(interpolation
145(interpolation
118 "#{" @punctuation.special
146 "#{" @punctuation.special
@@ -121,20 +149,36 @@
121(comment) @comment
149(comment) @comment
123; Operators
151; Operators
129] @operator
159] @operator
165+ operator: ["+=" "-=" "*=" "**=" "/=" "||=" "|=" "&&=" "&=" "%=" ">>=" "<<=" "^="] @operator)
168+ operator: ["/" "|" "==" "===" "||" "&&" ">>" "<<" "<" ">" "<=" ">=" "&" "^" "!~" "=~" "<=>" "**" "*" "!=" "%" "-" "+"] @operator)
171+ operator: [".." "..."] @operator)
135] @punctuation.delimiter
178] @punctuation.delimiter