diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index cb9955850..a2d030c27 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -343,6 +343,16 @@ list.surface = { maintainers = { "@connorlay" }, } +list.eex = { + install_info = { + url = "https://github.com/connorlay/tree-sitter-eex", + files = { "src/parser.c" }, + branch = "main", + }, + filetype = "eex", + maintainers = { "@connorlay" }, +} + list.heex = { install_info = { url = "https://github.com/connorlay/tree-sitter-heex", diff --git a/queries/eex/highlights.scm b/queries/eex/highlights.scm new file mode 100644 index 000000000..781b39466 --- /dev/null +++ b/queries/eex/highlights.scm @@ -0,0 +1,15 @@ +[ + "%>" + "--%>" + "<%!--" + "<%" + "<%#" + "<%%=" + "<%=" +] @tag.delimiter + +; EEx comments are highlighted as such +(comment) @comment + +; Tree-sitter parser errors +(ERROR) @error diff --git a/queries/eex/injections.scm b/queries/eex/injections.scm new file mode 100644 index 000000000..f43206f55 --- /dev/null +++ b/queries/eex/injections.scm @@ -0,0 +1,5 @@ +; EEx expressions are Elixir +(expression) @elixir + +; EEx expressions can span multiple interpolated lines +(partial_expression) @elixir @combined diff --git a/queries/elixir/injections.scm b/queries/elixir/injections.scm index c4c12cc1a..423fddea7 100644 --- a/queries/elixir/injections.scm +++ b/queries/elixir/injections.scm @@ -24,6 +24,11 @@ (#eq? @_sigil_name "F")) ; Zigler +(sigil + (sigil_name) @_sigil_name + (quoted_content) @eex +(#any-of? @_sigil_name "E" "L")) + (sigil (sigil_name) @_sigil_name (quoted_content) @zig