Skip to content

Commit

Permalink
add tree-sitter-embedded-template (erb & ejs) (#2055)
Browse files Browse the repository at this point in the history
After the incremental parsing rewrite for injections (which was released
in 22.03 https://helix-editor.com/news/release-22-03-highlights/#incremental-injection-parsing-rewrite),
we can now do combined injections which lets us pull in some templating
grammars. The most notable of those is embedded-template - a pretty
straightforward grammar that covers ERB and EJS.

The grammar and highlights queries are shared between the two but they have
different injections.
  • Loading branch information
the-mikedavis authored Apr 9, 2022
1 parent 78b1600 commit 494306a
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 0 deletions.
2 changes: 2 additions & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
| css || | | `vscode-css-language-server` |
| dart || || `dart` |
| dockerfile || | | `docker-langserver` |
| ejs || | | |
| elixir || | | `elixir-ls` |
| elm || | | `elm-language-server` |
| erb || | | |
| erlang || | | `erlang_ls` |
| fish |||| |
| git-commit || | | |
Expand Down
22 changes: 22 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1088,3 +1088,25 @@ language-server = { command = "sourcekit-lsp" }
[[grammar]]
name = "swift"
source = { git = "https://github.com/Dispersia/tree-sitter-swift", rev = "e75240f89bb3bfd3396155859ae364e5c58d7377" }

[[language]]
name = "erb"
scope = "text.html.erb"
injection-regex = "erb"
file-types = ["erb"]
roots = []
indent = { tab-width = 2, unit = " " }
grammar = "embedded-template"

[[language]]
name = "ejs"
scope = "text.html.ejs"
injection-regex = "ejs"
file-types = ["ejs"]
roots = []
indent = { tab-width = 2, unit = " " }
grammar = "embedded-template"

[[grammar]]
name = "embedded-template"
source = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template", rev = "d21df11b0ecc6fd211dbe11278e92ef67bd17e97" }
12 changes: 12 additions & 0 deletions runtime/queries/ejs/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
(comment_directive) @comment

[
"<%#"
"<%"
"<%="
"<%_"
"<%-"
"%>"
"-%>"
"_%>"
] @keyword
7 changes: 7 additions & 0 deletions runtime/queries/ejs/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
((content) @injection.content
(#set! injection.language "html")
(#set! injection.combined))

((code) @injection.content
(#set! injection.language "javascript")
(#set! injection.combined))
1 change: 1 addition & 0 deletions runtime/queries/erb/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
; inherits: ejs
7 changes: 7 additions & 0 deletions runtime/queries/erb/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
((content) @injection.content
(#set! injection.language "html")
(#set! injection.combined))

((code) @injection.content
(#set! injection.language "ruby")
(#set! injection.combined))

0 comments on commit 494306a

Please sign in to comment.