From e36ae0465c53ceec39322ed0240575fffaa1f784 Mon Sep 17 00:00:00 2001 From: David Baldwin Date: Mon, 6 Jan 2025 18:01:19 -0500 Subject: [PATCH] elixir: Add textobjects queries (#22055) Release Notes: - N/A Adds textobjects queries for Elixir. These queries were originally pulled directly from the [nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects) repo with [this textobjects.scm](https://raw.githubusercontent.com/nvim-treesitter/nvim-treesitter-textobjects/refs/heads/master/queries/elixir/textobjects.scm) file, but have been heavily edited for Zed. --- .../elixir/languages/elixir/textobjects.scm | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 extensions/elixir/languages/elixir/textobjects.scm diff --git a/extensions/elixir/languages/elixir/textobjects.scm b/extensions/elixir/languages/elixir/textobjects.scm new file mode 100644 index 0000000000000000000000000000000000000000..da111a1165914f8d4aa6c0afef849e6e937fc71a --- /dev/null +++ b/extensions/elixir/languages/elixir/textobjects.scm @@ -0,0 +1,46 @@ +(call + target: ((identifier) @_identifier + (#any-of? @_identifier "defmodule" "defprotocol" "defimpl")) + (do_block + "do" + (_)* @class.inside + "end")) @class.around + +(anonymous_function + (stab_clause + right: (body) @function.inside)) @function.around + +(call + target: ((identifier) @_identifier + (#any-of? @_identifier "def" "defmacro" "defmacrop" "defn" "defnp" "defp")) + (do_block + "do" + (_)* @function.inside + "end")) @function.around + +(call + target: ((identifier) @_identifier + (#any-of? @_identifier "def" "defmacro" "defmacrop" "defn" "defnp" "defp")) + (arguments + (_) + (keywords + (pair + value: (_) @function.inside)))) @function.around + +(call + target: ((identifier) @_identifier + (#any-of? @_identifier "defdelegate" "defguard" "defguardp"))) @function.around + +(comment) @comment.around + +(unary_operator + operator: "@" + operand: (call + target: ((identifier) @_identifier + (#any-of? @_identifier "moduledoc" "typedoc" "shortdoc" "doc")) + (arguments + [ + (keywords) @comment.inside + (string + (quoted_content) @comment.inside) + ]))) @comment.around