From b89b2eaf68c53a2c10a0f649f9487ad46c85e11e Mon Sep 17 00:00:00 2001 From: Philipp Mildenberger Date: Mon, 20 Feb 2023 23:42:54 +0100 Subject: [PATCH] Added yuck language support (for eww) (#6064) --- book/src/generated/lang-support.md | 1 + languages.toml | 13 ++++++ runtime/queries/yuck/highlights.scm | 66 +++++++++++++++++++++++++++++ runtime/queries/yuck/injections.scm | 2 + 4 files changed, 82 insertions(+) create mode 100644 runtime/queries/yuck/highlights.scm create mode 100644 runtime/queries/yuck/injections.scm diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index b9442693d..1cdc9e6ca 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -147,4 +147,5 @@ | xit | ✓ | | | | | xml | ✓ | | ✓ | | | yaml | ✓ | | ✓ | `yaml-language-server` | +| yuck | ✓ | | | | | zig | ✓ | ✓ | ✓ | `zls` | diff --git a/languages.toml b/languages.toml index 6aac13970..38dedb441 100644 --- a/languages.toml +++ b/languages.toml @@ -2180,3 +2180,16 @@ comment-token = "(" [[grammar]] name = "uxntal" source = { git = "https://github.com/Jummit/tree-sitter-uxntal", rev = "9297e95ef74380b0ad84c4fd98f91e9f6e4319e6" } + +[[language]] +name = "yuck" +scope = "source.yuck" +injection-regex = "yuck" +file-types = ["yuck"] +roots = [] +comment-token = ";" +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "yuck" +source = { git = "https://github.com/Philipp-M/tree-sitter-yuck", rev = "9e97da5773f82123a8c8cccf8f7e795d140ed7d1" } diff --git a/runtime/queries/yuck/highlights.scm b/runtime/queries/yuck/highlights.scm new file mode 100644 index 000000000..483348a8c --- /dev/null +++ b/runtime/queries/yuck/highlights.scm @@ -0,0 +1,66 @@ +(ERROR) @error + +(line_comment) @comment + +; keywords and symbols + +(keyword) @keyword +(symbol) @tag + +; literals + +(bool_literal) @constant.builtin.boolean +(num_literal) @constant.numeric + +; strings +(string_interpolation + (string_interpolation_start) @punctuation.special + (string_interpolation_end) @punctuation.special) + +(escape_sequence) @constant.character.escape + +(string + [ + (unescaped_single_quote_string_fragment) + (unescaped_double_quote_string_fragment) + (unescaped_backtick_string_fragment) + "\"" + "'" + "`" + ]) @string + +; operators and general punctuation + +(unary_expression + operator: _ @operator) + +(binary_expression + operator: _ @operator) + +(ternary_expression + operator: _ @operator) + +[ + ":" + "." + "," +] @punctuation.delimiter + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket +[ + ":" + "." + "," +] @punctuation.delimiter + +; Rest (general identifiers that are not yet catched) + +(index) @variable +(ident) @variable diff --git a/runtime/queries/yuck/injections.scm b/runtime/queries/yuck/injections.scm new file mode 100644 index 000000000..d3fdb0ca7 --- /dev/null +++ b/runtime/queries/yuck/injections.scm @@ -0,0 +1,2 @@ +((line_comment) @injection.content + (#set! injection.language "comment"))