aboutsummaryrefslogtreecommitdiffstats
path: root/queries
diff options
context:
space:
mode:
authordvic <info@dvic.io>2023-08-14 20:59:27 +0200
committerChristian Clason <c.clason@uni-graz.at>2023-08-15 11:13:33 +0200
commit11d79aa0f731439f2cd05579a64ac13857002f16 (patch)
tree78f4bc6e0e2dd91cec09b22ed2dae682a24134ca /queries
parentUpdate parsers: arduino, cuda, glsl, hlsl, objc, promql, wing (diff)
downloadnvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar.gz
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar.bz2
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar.lz
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar.xz
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.tar.zst
nvim-treesitter-11d79aa0f731439f2cd05579a64ac13857002f16.zip
Fix HEEx directive injections
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