From a9e32d0cc5641651bffc5bcc74efffa4ac6fcd13 Mon Sep 17 00:00:00 2001 From: Clay Date: Sun, 15 Aug 2021 09:40:02 -0700 Subject: Add HEEx language support, add missing commentstrings --- queries/elixir/injections.scm | 5 +++++ queries/heex/folds.scm | 5 +++++ queries/heex/highlights.scm | 35 +++++++++++++++++++++++++++++++++++ queries/heex/indents.scm | 11 +++++++++++ queries/heex/injections.scm | 7 +++++++ queries/surface/folds.scm | 1 + queries/surface/highlights.scm | 12 ++++++------ queries/surface/indents.scm | 2 ++ 8 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 queries/heex/folds.scm create mode 100644 queries/heex/highlights.scm create mode 100644 queries/heex/indents.scm create mode 100644 queries/heex/injections.scm (limited to 'queries') 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 -- cgit v1.2.3-70-g09d2