From da8071047a8d48cb93dfb4a6ab9b8b2d08efb0dd Mon Sep 17 00:00:00 2001
From: Clay <connorlay@users.noreply.github.com>
Date: Mon, 5 Sep 2022 03:49:41 -1000
Subject: [PATCH] Elixir: update tree-sitter queries (#3645)

---
 runtime/queries/elixir/injections.scm  | 50 +++++++++++++++++++++-----
 runtime/queries/elixir/textobjects.scm |  2 +-
 2 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/runtime/queries/elixir/injections.scm b/runtime/queries/elixir/injections.scm
index 5c58a863..4853b84b 100644
--- a/runtime/queries/elixir/injections.scm
+++ b/runtime/queries/elixir/injections.scm
@@ -1,20 +1,16 @@
+; Elixir Code Comments
 ((comment) @injection.content
  (#set! injection.language "comment"))
 
+; Elixir Regular Expressions
 ((sigil
   (sigil_name) @_sigil_name
   (quoted_content) @injection.content)
- (#match? @_sigil_name "^(r|R)$")
+ (#match? @_sigil_name "^(R|r)$")
  (#set! injection.language "regex")
  (#set! injection.combined))
 
-((sigil
-  (sigil_name) @_sigil_name
-  (quoted_content) @injection.content)
- (#eq? @_sigil_name "H")
- (#set! injection.language "heex")
- (#set! injection.combined))
-
+; Elixir Markdown Documentation
 (unary_operator
   operator: "@"
   operand: (call
@@ -23,3 +19,41 @@
       (string (quoted_content) @injection.content)
       (sigil (quoted_content) @injection.content)
   ])) (#set! injection.language "markdown"))
+
+; Zigler Sigils
+((sigil
+  (sigil_name) @_sigil_name
+  (quoted_content) @injection.content)
+ (#match? @_sigil_name "^(Z|z)$")
+ (#set! injection.language "zig")
+ (#set! injection.combined))
+
+; Jason Sigils
+((sigil
+  (sigil_name) @_sigil_name
+  (quoted_content) @injection.content)
+ (#match? @_sigil_name "^(J|j)$")
+ (#set! injection.language "json")
+ (#set! injection.combined))
+
+; Phoenix Live View HEEx Sigils
+((sigil
+  (sigil_name) @_sigil_name
+  (quoted_content) @injection.content)
+ (#eq? @_sigil_name "H")
+ (#set! injection.language "heex")
+ (#set! injection.combined))
+
+; Phoenix Live View Component Macros
+(call 
+  (identifier) @_identifier
+  (arguments
+    (atom)+
+    (keywords (pair 
+      ((keyword) @_keyword (#eq? @_keyword "doc: "))
+      [
+        (string (quoted_content) @injection.content)
+        (sigil (quoted_content) @injection.content)
+      ]))
+  (#match? @_identifier "^(attr|slot)$")
+  (#set! injection.language "markdown")))
diff --git a/runtime/queries/elixir/textobjects.scm b/runtime/queries/elixir/textobjects.scm
index cc1bee99..ab456584 100644
--- a/runtime/queries/elixir/textobjects.scm
+++ b/runtime/queries/elixir/textobjects.scm
@@ -32,4 +32,4 @@
   (do_block (_)* @test.inside)?)
  (#match? @_keyword "^(test|describe)$")) @test.around
 
-(comment) @comment.around @comment.inside
+(comment)+ @comment.around @comment.inside