aboutsummaryrefslogtreecommitdiffstats
path: root/queries
diff options
context:
space:
mode:
authorClay <connorlay@pm.me>2021-08-15 09:40:02 -0700
committerStephan Seitz <stephan.seitz@fau.de>2021-09-17 21:06:36 +0200
commita9e32d0cc5641651bffc5bcc74efffa4ac6fcd13 (patch)
treec6fb6e091621bd04778a6ee8af976e6f24b1b37d /queries
parentUpdate lockfile.json (diff)
downloadnvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar.gz
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar.bz2
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar.lz
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar.xz
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.tar.zst
nvim-treesitter-a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13.zip
Add HEEx language support, add missing commentstrings
Diffstat (limited to 'queries')
-rw-r--r--queries/elixir/injections.scm5
-rw-r--r--queries/heex/folds.scm5
-rw-r--r--queries/heex/highlights.scm35
-rw-r--r--queries/heex/indents.scm11
-rw-r--r--queries/heex/injections.scm7
-rw-r--r--queries/surface/folds.scm1
-rw-r--r--queries/surface/highlights.scm12
-rw-r--r--queries/surface/indents.scm2
8 files changed, 72 insertions, 6 deletions
diff --git a/queries/elixir/injections.scm b/queries/elixir/injections.scm
index 02709add0..29fc58426 100644
--- a/queries/elixir/injections.scm
+++ b/queries/elixir/injections.scm
@@ -13,3 +13,8 @@
(sigil_start) @_start
(sigil_content) @surface)
(#eq? @_start "~F\"\"\""))
+
+((sigil
+ (sigil_start) @_start
+ (sigil_content) @heex)
+ (#eq? @_start "~H\"\"\""))
diff --git a/queries/heex/folds.scm b/queries/heex/folds.scm
new file mode 100644
index 000000000..414890e91
--- /dev/null
+++ b/queries/heex/folds.scm
@@ -0,0 +1,5 @@
+; HEEx folds similar to HTML
+[
+ (tag)
+ (component)
+] @fold
diff --git a/queries/heex/highlights.scm b/queries/heex/highlights.scm
new file mode 100644
index 000000000..d9d0b0c66
--- /dev/null
+++ b/queries/heex/highlights.scm
@@ -0,0 +1,35 @@
+; HEEx text is highlighted as such
+(text) @text
+
+; HEEx has two types of comments, both are highlighted as such
+(comment) @comment
+
+; HEEx attributes are highlighted as HTML attributes
+(attribute_name) @tag.attribute
+
+; Attributes are highlighted as strings
+(quoted_attribute_value) @string
+
+; HEEx supports HTML tags and are highlighted as such
+[
+ "<"
+ ">"
+ "</"
+ "/>"
+ "<%"
+ "<%="
+ "<%%="
+ "<%#"
+ "%>"
+ "{"
+ "}"
+] @tag.delimiter
+
+; HEEx tags are highlighted as HTML
+(tag_name) @tag
+
+; HEEx components are highlighted as types (Elixir modules)
+(component_name) @type
+
+; HEEx operators
+["="] @operator
diff --git a/queries/heex/indents.scm b/queries/heex/indents.scm
new file mode 100644
index 000000000..02771b016
--- /dev/null
+++ b/queries/heex/indents.scm
@@ -0,0 +1,11 @@
+; HEEx indents like HTML
+[
+ (component)
+ (tag)
+] @indent
+
+; Dedent at the end of each tag
+[
+ (end_tag)
+ (end_component)
+] @branch
diff --git a/queries/heex/injections.scm b/queries/heex/injections.scm
new file mode 100644
index 000000000..de3b4202d
--- /dev/null
+++ b/queries/heex/injections.scm
@@ -0,0 +1,7 @@
+; Directives are combined to support do blocks
+(directive (expression_value) @elixir @combined)
+
+; Expressions are not combined, as they exist separately from do blocks
+(expression (expression_value) @elixir)
+
+(comment) @comment
diff --git a/queries/surface/folds.scm b/queries/surface/folds.scm
index 57763a6e2..994f12e1e 100644
--- a/queries/surface/folds.scm
+++ b/queries/surface/folds.scm
@@ -1,5 +1,6 @@
; Surface folds similar to HTML and includes blocks
[
(tag)
+ (component)
(block)
] @fold
diff --git a/queries/surface/highlights.scm b/queries/surface/highlights.scm
index 77b88c052..5cdaa977c 100644
--- a/queries/surface/highlights.scm
+++ b/queries/surface/highlights.scm
@@ -19,12 +19,12 @@
; Surface supports HTML tags and are highlighted as such
[
- (start_tag)
- (end_tag)
- (self_closing_tag)
- (start_component)
- (end_component)
- (self_closing_component)
+ "<"
+ ">"
+ "</"
+ "/>"
+ "{"
+ "}"
] @tag.delimiter
; Expressions are similar to string interpolation, and are highloghted as such
diff --git a/queries/surface/indents.scm b/queries/surface/indents.scm
index ad6835752..dceea9c7e 100644
--- a/queries/surface/indents.scm
+++ b/queries/surface/indents.scm
@@ -1,5 +1,6 @@
; Surface indents like HTML, with the addition of blocks
[
+ (component)
(tag)
(block)
] @indent
@@ -7,6 +8,7 @@
; Dedent at the end of each tag, as well as a subblock
[
(end_tag)
+ (end_component)
(end_block)
(subblock)
] @branch