summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml13
-rw-r--r--runtime/queries/meson/highlights.scm62
-rw-r--r--runtime/queries/meson/indents.scm16
4 files changed, 92 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 68163e08..95cf91a4 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 bda195f2..bedde5a2 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 00000000..01df8f27
--- /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 00000000..a1c7b3fa
--- /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