diff options
Diffstat (limited to 'runtime/queries/ruby/highlights.scm')
| -rw-r--r-- | runtime/queries/ruby/highlights.scm | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/runtime/queries/ruby/highlights.scm b/runtime/queries/ruby/highlights.scm new file mode 100644 index 000000000..a1a2c250d --- /dev/null +++ b/runtime/queries/ruby/highlights.scm @@ -0,0 +1,306 @@ +; Variables +[ + (identifier) + (global_variable) +] @variable + +; Keywords +[ + "alias" + "begin" + "do" + "end" + "ensure" + "module" + "rescue" + "then" +] @keyword + +"class" @keyword.type + +[ + "return" + "yield" +] @keyword.return + +[ + "and" + "or" + "in" + "not" +] @keyword.operator + +[ + "def" + "undef" +] @keyword.function + +(method + "end" @keyword.function) + +[ + "case" + "else" + "elsif" + "if" + "unless" + "when" + "then" +] @keyword.conditional + +(if + "end" @keyword.conditional) + +[ + "for" + "until" + "while" + "break" + "redo" + "retry" + "next" +] @keyword.repeat + +(constant) @constant + +((identifier) @keyword.modifier + (#any-of? @keyword.modifier "private" "protected" "public")) + +[ + "rescue" + "ensure" +] @keyword.exception + +; Function calls +"defined?" @function + +(call + receiver: (constant)? @type + method: [ + (identifier) + (constant) + ] @function.call) + +(program + (call + (identifier) @keyword.import) + (#any-of? @keyword.import "require" "require_relative" "load")) + +; Function definitions +(alias + (identifier) @function) + +(setter + (identifier) @function) + +(method + name: [ + (identifier) @function + (constant) @type + ]) + +(singleton_method + name: [ + (identifier) @function + (constant) @type + ]) + +(class + name: (constant) @type) + +(module + name: (constant) @type) + +(superclass + (constant) @type) + +; Identifiers +[ + (class_variable) + (instance_variable) +] @variable.member + +((identifier) @constant.builtin + (#any-of? @constant.builtin + "__callee__" "__dir__" "__id__" "__method__" "__send__" "__ENCODING__" "__FILE__" "__LINE__")) + +((identifier) @function.builtin + (#any-of? @function.builtin "attr_reader" "attr_writer" "attr_accessor" "module_function")) + +((call + !receiver + method: (identifier) @function.builtin) + (#any-of? @function.builtin "include" "extend" "prepend" "refine" "using")) + +((identifier) @keyword.exception + (#any-of? @keyword.exception "raise" "fail" "catch" "throw")) + +((constant) @type + (#not-lua-match? @type "^[A-Z0-9_]+$")) + +[ + (self) + (super) +] @variable.builtin + +(method_parameters + (identifier) @variable.parameter) + +(lambda_parameters + (identifier) @variable.parameter) + +(block_parameters + (identifier) @variable.parameter) + +(splat_parameter + (identifier) @variable.parameter) + +(hash_splat_parameter + (identifier) @variable.parameter) + +(optional_parameter + (identifier) @variable.parameter) + +(destructured_parameter + (identifier) @variable.parameter) + +(block_parameter + (identifier) @variable.parameter) + +(keyword_parameter + (identifier) @variable.parameter) + +; Literals +[ + (string_content) + (heredoc_content) + "\"" + "`" +] @string + +[ + (heredoc_beginning) + (heredoc_end) +] @label + +[ + (bare_symbol) + (simple_symbol) + (delimited_symbol) + (hash_key_symbol) +] @string.special.symbol + +(regex + (string_content) @string.regexp) + +(escape_sequence) @string.escape + +(integer) @number + +(float) @number.float + +[ + (true) + (false) +] @boolean + +(nil) @constant.builtin + +(comment) @comment @spell + +((program + . + (comment) @keyword.directive @nospell) + (#lua-match? @keyword.directive "^#!/")) + +(program + (comment)+ @comment.documentation + (class)) + +(module + (comment)+ @comment.documentation + (body_statement + (class))) + +(class + (comment)+ @comment.documentation + (body_statement + (method))) + +(body_statement + (comment)+ @comment.documentation + (method)) + +; Operators +[ + "!" + "=" + "==" + "===" + "<=>" + "=>" + "->" + ">>" + "<<" + ">" + "<" + ">=" + "<=" + "**" + "*" + "/" + "%" + "+" + "-" + "&" + "|" + "^" + "&&" + "||" + "||=" + "&&=" + "!=" + "%=" + "+=" + "-=" + "*=" + "/=" + "=~" + "!~" + "?" + ":" + ".." + "..." +] @operator + +[ + "," + ";" + "." + "&." + "::" +] @punctuation.delimiter + +(regex + "/" @punctuation.bracket) + +(pair + ":" @punctuation.delimiter) + +[ + "(" + ")" + "[" + "]" + "{" + "}" + "%w(" + "%i(" +] @punctuation.bracket + +(block_parameters + "|" @punctuation.bracket) + +(interpolation + "#{" @punctuation.special + "}" @punctuation.special) |
