aboutsummaryrefslogtreecommitdiffstats
path: root/queries
diff options
context:
space:
mode:
Diffstat (limited to 'queries')
-rw-r--r--queries/heex/injections.scm29
1 files changed, 20 insertions, 9 deletions
diff --git a/queries/heex/injections.scm b/queries/heex/injections.scm
index 1aa822197..403697acb 100644
--- a/queries/heex/injections.scm
+++ b/queries/heex/injections.scm
@@ -1,14 +1,25 @@
-; HEEx directives can span multiple interpolated lines of Elixir
-(directive [
- (expression_value)
- (partial_expression_value)
-] @injection.content
+; directives are standalone tags like '<%= @x %>'
+;
+; partial_expression_values are elixir code that is part of an expression that
+; spans multiple directive nodes, so they must be combined. For example:
+; <%= if true do %>
+; <p>hello, tree-sitter!</p>
+; <% end %>
+(directive
+ (partial_expression_value) @injection.content
(#set! injection.language "elixir")
- (#set! injection.combined))
+ (#set! injection.include-children)
+ (#set! injection.combined))
-; HEEx Elixir expressions are always within a tag or component
-(expression
- (expression_value) @injection.content
+; Regular expression_values do not need to be combined
+((directive
+ (expression_value) @injection.content)
+ (#set! injection.language "elixir"))
+
+; expressions live within HTML tags, and do not need to be combined
+; <link href={ Routes.static_path(..) } />
+(expression
+ (expression_value) @injection.content
(#set! injection.language "elixir"))
; HEEx comments