From 2cb1ea7127122bbcb0f05dfbb7959334c751c3d7 Mon Sep 17 00:00:00 2001 From: unrelentingtech Date: Wed, 11 May 2022 04:06:37 +0300 Subject: [PATCH] feat(lang): add Meson language support (#2314) https://mesonbuild.com/Syntax.html --- book/src/generated/lang-support.md | 1 + languages.toml | 13 ++++++ runtime/queries/meson/highlights.scm | 62 ++++++++++++++++++++++++++++ runtime/queries/meson/indents.scm | 16 +++++++ 4 files changed, 92 insertions(+) create mode 100644 runtime/queries/meson/highlights.scm create mode 100644 runtime/queries/meson/indents.scm diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 68163e08b..95cf91a43 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -53,6 +53,7 @@ | lua | ✓ | | ✓ | | | make | ✓ | | | | | markdown | ✓ | | | | +| meson | ✓ | | ✓ | | | mint | | | | `mint` | | nickel | ✓ | | ✓ | `nls` | | nix | ✓ | | ✓ | `rnix-lsp` | diff --git a/languages.toml b/languages.toml index bda195f2e..bedde5a2d 100644 --- a/languages.toml +++ b/languages.toml @@ -1342,3 +1342,16 @@ indent = { tab-width = 4, unit = " " } [[grammar]] name = "odin" source = { git = "https://github.com/MineBill/tree-sitter-odin", rev = "da885f4a387f169b9b69fe0968259ee257a8f69a" } + +[[language]] +name = "meson" +scope = "source.meson" +injection-regex = "meson" +file-types = ["meson.build"] +roots = [] +comment-token = "#" +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "meson" +source = { git = "https://github.com/bearcove/tree-sitter-meson", rev = "feea83be9225842490066522ced2d13eb9cce0bd" } diff --git a/runtime/queries/meson/highlights.scm b/runtime/queries/meson/highlights.scm new file mode 100644 index 000000000..01df8f279 --- /dev/null +++ b/runtime/queries/meson/highlights.scm @@ -0,0 +1,62 @@ +(string_literal) @string + +(boolean_literal) @constant.builtin.boolean +(integer_literal) @constant.numeric.integer + +(comment) @comment.line +(function_id) @function +(keyword_arg_key) @variable.other.member +(id_expression) @variable + +[ + "if" + "elif" + "else" + "endif" +] @keyword.control.conditional + +[ + "foreach" + "endforeach" +] @keyword.control.repeat + +[ + "break" + "continue" +] @keyword.control + +[ + "not" + "in" + "and" + "or" +] @keyword.operator + +[ + "!" + "+" + "-" + "*" + "/" + "%" + "==" + "!=" + ">" + "<" + ">=" + "<=" +] @operator + +[ + ":" + "," +] @punctuation.delimiter + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket diff --git a/runtime/queries/meson/indents.scm b/runtime/queries/meson/indents.scm new file mode 100644 index 000000000..a1c7b3fab --- /dev/null +++ b/runtime/queries/meson/indents.scm @@ -0,0 +1,16 @@ +[ + (method_expression) + (function_expression) + (array_literal) + (dictionary_literal) + (selection_statement) + (iteration_statement) +] @indent + +[ + ")" + "]" + "}" + "endif" + "endforeach" +] @outdent