aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/ruby/highlights.scm
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/ruby/highlights.scm')
-rw-r--r--runtime/queries/ruby/highlights.scm306
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)