diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-12 09:54:30 -0600 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 692b051b09935653befdb8f7ba8afdb640adf17b (patch) | |
| tree | 167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/ruby | |
| parent | feat(c-family): inherit injections (diff) | |
| download | nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2 nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip | |
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/ruby')
| -rw-r--r-- | runtime/queries/ruby/folds.scm | 12 | ||||
| -rw-r--r-- | runtime/queries/ruby/highlights.scm | 306 | ||||
| -rw-r--r-- | runtime/queries/ruby/indents.scm | 43 | ||||
| -rw-r--r-- | runtime/queries/ruby/injections.scm | 23 | ||||
| -rw-r--r-- | runtime/queries/ruby/locals.scm | 93 |
5 files changed, 477 insertions, 0 deletions
diff --git a/runtime/queries/ruby/folds.scm b/runtime/queries/ruby/folds.scm new file mode 100644 index 000000000..3a497b31b --- /dev/null +++ b/runtime/queries/ruby/folds.scm @@ -0,0 +1,12 @@ +[ + (method) + (singleton_method) + (class) + (module) + (if) + (else) + (case) + (do_block) + (singleton_class) + (lambda) +] @fold 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) diff --git a/runtime/queries/ruby/indents.scm b/runtime/queries/ruby/indents.scm new file mode 100644 index 000000000..b76732922 --- /dev/null +++ b/runtime/queries/ruby/indents.scm @@ -0,0 +1,43 @@ +[ + (class) + (singleton_class) + (method) + (singleton_method) + (module) + (call) + (if) + (block) + (do_block) + (hash) + (array) + (argument_list) + (case) + (while) + (until) + (for) + (begin) + (unless) + (assignment) + (parenthesized_statements) +] @indent.begin + +[ + "end" + ")" + "}" + "]" +] @indent.end + +[ + "end" + ")" + "}" + "]" + (when) + (elsif) + (else) + (rescue) + (ensure) +] @indent.branch + +(comment) @indent.ignore diff --git a/runtime/queries/ruby/injections.scm b/runtime/queries/ruby/injections.scm new file mode 100644 index 000000000..12b2c32a5 --- /dev/null +++ b/runtime/queries/ruby/injections.scm @@ -0,0 +1,23 @@ +((comment) @injection.content + (#set! injection.language "comment")) + +(heredoc_body + (heredoc_content) @injection.content + (heredoc_end) @injection.language + (#downcase! @injection.language)) + +(regex + (string_content) @injection.content + (#set! injection.language "regex")) + +((call + receiver: (identifier) @_receiver + method: (identifier) @_method + arguments: (argument_list + (pair + key: (hash_key_symbol) + value: (string + (string_content) @injection.content)))) + (#eq? @_receiver "binding") + (#any-of? @_method "b" "break") + (#set! injection.self)) diff --git a/runtime/queries/ruby/locals.scm b/runtime/queries/ruby/locals.scm new file mode 100644 index 000000000..29a67e2ba --- /dev/null +++ b/runtime/queries/ruby/locals.scm @@ -0,0 +1,93 @@ +; The MIT License (MIT) +; +; Copyright (c) 2016 Rob Rix +; +; Permission is hereby granted, free of charge, to any person obtaining a copy +; of this software and associated documentation files (the "Software"), to deal +; in the Software without restriction, including without limitation the rights +; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +; copies of the Software, and to permit persons to whom the Software is +; furnished to do so, subject to the following conditions: +; +; The above copyright notice and this permission notice shall be included in all +; copies or substantial portions of the Software. +; +; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +; SOFTWARE. +; DECLARATIONS AND SCOPES +(method) @local.scope + +(class) @local.scope + +[ + (block) + (do_block) +] @local.scope + +(identifier) @local.reference + +(constant) @local.reference + +(instance_variable) @local.reference + +(module + name: (constant) @local.definition.namespace) + +(class + name: (constant) @local.definition.type) + +(method + name: [ + (identifier) + (constant) + ] @local.definition.function) + +(singleton_method + name: [ + (identifier) + (constant) + ] @local.definition.function) + +(method_parameters + (identifier) @local.definition.var) + +(lambda_parameters + (identifier) @local.definition.var) + +(block_parameters + (identifier) @local.definition.var) + +(splat_parameter + (identifier) @local.definition.var) + +(hash_splat_parameter + (identifier) @local.definition.var) + +(optional_parameter + name: (identifier) @local.definition.var) + +(destructured_parameter + (identifier) @local.definition.var) + +(block_parameter + name: (identifier) @local.definition.var) + +(keyword_parameter + name: (identifier) @local.definition.var) + +(assignment + left: (_) @local.definition.var) + +(left_assignment_list + (identifier) @local.definition.var) + +(rest_assignment + (identifier) @local.definition.var) + +(destructured_left_assignment + (identifier) @local.definition.var) |
