elixir: Add textobjects queries (#22055)

David Baldwin created

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.

Change summary

extensions/elixir/languages/elixir/textobjects.scm | 46 ++++++++++++++++
1 file changed, 46 insertions(+)

Detailed changes

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