diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 8ad94bf7..17baa2c3 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -67,6 +67,7 @@ | elixir | ✓ | ✓ | ✓ | ✓ | ✓ | `elixir-ls`, `expert` | | elm | ✓ | ✓ | | ✓ | | `elm-language-server` | | elvish | ✓ | | | | | `elvish` | +| embedded-perl | ✓ | | | | | | | env | ✓ | ✓ | | | | | | erb | ✓ | | | | | | | erlang | ✓ | ✓ | | ✓ | ✓ | `erlang_ls`, `elp` | diff --git a/languages.toml b/languages.toml index d1afc51d..09bce7c8 100644 --- a/languages.toml +++ b/languages.toml @@ -1923,6 +1923,18 @@ indent = { tab-width = 2, unit = " " } name = "perl" source = { git = "https://github.com/tree-sitter-perl/tree-sitter-perl", rev = "72a08a496a23212f23802490ef6f4700d68cfd0e" } +[[language]] +name = "embedded-perl" +scope = "text.html.ep" +injection-regex = "embedded-perl" +file-types = ["ep", { glob = "*.html.ep" }] +comment-token = "%#" +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "embedded-perl" +source = { git = "https://github.com/jobindex-open/tree-sitter-embedded-perl", rev = "14b9a948030edd99c132b78a3d3dc2c7537a061b" } + [[language]] name = "pod" scope = "source.pod" diff --git a/runtime/queries/embedded-perl/highlights.scm b/runtime/queries/embedded-perl/highlights.scm new file mode 100644 index 00000000..5ac87a67 --- /dev/null +++ b/runtime/queries/embedded-perl/highlights.scm @@ -0,0 +1,22 @@ +; Comments +([ + (comment_tag) + (line_comment) +] @comment) + +; Tag and line directive delimiters +(code_tag "<%" @keyword.directive) +(expression_tag "<%=" @keyword.directive) +(raw_expression_tag "<%==" @keyword.directive) +(comment_tag "<%#" @keyword.directive) + +(line_code "%" @keyword.directive) +(line_expression "%=" @keyword.directive) +(line_raw_expression "%==" @keyword.directive) +(line_comment "%#" @keyword.directive) +(line_escaped_percent "%%" @constant.character.escape) + +(escaped_open_tag) @constant.character.escape + +(tag_close "%>" @keyword.directive) +(tag_close "=" @keyword.directive "%>" @keyword.directive) diff --git a/runtime/queries/embedded-perl/injections.scm b/runtime/queries/embedded-perl/injections.scm new file mode 100644 index 00000000..20dd8f89 --- /dev/null +++ b/runtime/queries/embedded-perl/injections.scm @@ -0,0 +1,21 @@ +((code_tag (tag_content) @injection.content) + (#set! injection.language "perl")) + +((expression_tag (tag_content) @injection.content) + (#set! injection.language "perl")) + +((raw_expression_tag (tag_content) @injection.content) + (#set! injection.language "perl")) + +((line_code (line_content) @injection.content) + (#set! injection.language "perl")) + +((line_expression (line_content) @injection.content) + (#set! injection.language "perl")) + +((line_raw_expression (line_content) @injection.content) + (#set! injection.language "perl")) + +((non_directive_text) @injection.content + (#set! injection.language "html") + (#set! injection.combined))