; Keywords [ "BEGIN" "END" "alias" "begin" "class" "do" "end" "module" "in" "rescue" "ensure" ] @keyword [ "if" "else" "elsif" "when" "case" "unless" "then" ] @keyword.control.conditional [ "for" "while" "retry" "until" "redo" ] @keyword.control.repeat [ "yield" "return" "next" "break" ] @keyword.control.return [ "def" "undef" ] @keyword.function ((identifier) @keyword.control.import (#match? @keyword.control.import "^(require|require_relative|load|autoload)$")) [ "or" "and" "not" ] @keyword.operator ((identifier) @keyword.control.exception (#match? @keyword.control.exception "^(raise|fail)$")) ; Function calls ((identifier) @function.builtin (#match? @function.builtin "^(attr|attr_accessor|attr_reader|attr_writer|include|prepend|refine|private|protected|public)$")) "defined?" @function.builtin (call method: [(identifier) (constant)] @function.method) ; Function definitions (alias (identifier) @function.method) (setter (identifier) @function.method) (method name: [(identifier) (constant)] @function.method) (singleton_method name: [(identifier) (constant)] @function.method) ; Identifiers [ (class_variable) (instance_variable) ] @variable.other.member ((identifier) @constant.builtin (#match? @constant.builtin "^(__FILE__|__LINE__|__ENCODING__)$")) ((constant) @constant.builtin (#match? @constant.builtin "^(ENV|ARGV|ARGF|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING)$")) ((constant) @constant (#match? @constant "^[A-Z\\d_]+$")) (constant) @constructor (self) @variable.builtin (super) @function.builtin [(forward_parameter)(forward_argument)] @variable.parameter (keyword_parameter name:((_)":" @variable.parameter) @variable.parameter) (optional_parameter name:((_)"=" @operator) @variable.parameter) (optional_parameter name: (identifier) @variable.parameter) (splat_parameter name: (identifier) @variable.parameter) @variable.parameter (hash_splat_parameter name: (identifier) @variable.parameter) @variable.parameter (method_parameters (identifier) @variable.parameter) (block_parameter (identifier) @variable.parameter) (block_parameters (identifier) @variable.parameter) ((identifier) @function.method (#is-not? local)) [ (identifier) ] @variable ; Literals [ (string) (bare_string) (subshell) (heredoc_body) (heredoc_beginning) ] @string [ (simple_symbol) (delimited_symbol) (bare_symbol) ] @string.special.symbol (pair key: ((_)":" @string.special.symbol) @string.special.symbol) (regex) @string.regexp (escape_sequence) @constant.character.escape [ (integer) (float) ] @constant.numeric.integer [ (nil) (true) (false) ] @constant.builtin (interpolation "#{" @punctuation.special "}" @punctuation.special) @embedded (comment) @comment ; Operators [ ":" "?" "~" "=>" "->" "!" ] @operator (assignment "=" @operator) (operator_assignment operator: ["+=" "-=" "*=" "**=" "/=" "||=" "|=" "&&=" "&=" "%=" ">>=" "<<=" "^="] @operator) (binary operator: ["/" "|" "==" "===" "||" "&&" ">>" "<<" "<" ">" "<=" ">=" "&" "^" "!~" "=~" "<=>" "**" "*" "!=" "%" "-" "+"] @operator) (range operator: [".." "..."] @operator) [ "," ";" "." "&." ] @punctuation.delimiter [ "|" "(" ")" "[" "]" "{" "}" "%w(" "%i(" ] @punctuation.bracket