Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml18
-rw-r--r--runtime/queries/adl/highlights.scm37
-rw-r--r--runtime/queries/adl/indents.scm12
-rw-r--r--runtime/queries/adl/textobjects.scm1
5 files changed, 69 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 156898d4..4cd67bc5 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -1,6 +1,7 @@
| Language | Syntax Highlighting | Treesitter Textobjects | Auto Indent | Default LSP |
| --- | --- | --- | --- | --- |
| ada | ✓ | ✓ | | `ada_language_server`, `ada_language_server` |
+| adl | ✓ | ✓ | ✓ | |
| agda | ✓ | | | |
| astro | ✓ | | | |
| awk | ✓ | ✓ | | `awk-language-server` |
diff --git a/languages.toml b/languages.toml
index 87778c99..b700c326 100644
--- a/languages.toml
+++ b/languages.toml
@@ -3479,3 +3479,21 @@ language-servers = ["earthlyls"]
[[grammar]]
name = "earthfile"
source = { git = "https://github.com/glehmann/tree-sitter-earthfile", rev = "2a6ab191f5f962562e495a818aa4e7f45f8a556a" }
+
+[[language]]
+name = "adl"
+scope = "source.adl"
+injection-regex = "adl"
+file-types = ["adl"]
+roots = []
+comment-token = "//"
+indent = { tab-width = 2, unit = " " }
+
+[language.auto-pairs]
+'"' = '"'
+'{' = '}'
+'<' = '>'
+
+[[grammar]]
+name = "adl"
+source = { git = "https://github.com/adl-lang/tree-sitter-adl", rev = "2787d04beadfbe154d3f2da6e98dc45a1b134bbf" }
diff --git a/runtime/queries/adl/highlights.scm b/runtime/queries/adl/highlights.scm
new file mode 100644
index 00000000..88e00ad7
--- /dev/null
+++ b/runtime/queries/adl/highlights.scm
@@ -0,0 +1,37 @@
+; adl
+
+[
+"module"
+"struct"
+"union"
+"type"
+"newtype"
+"annotation"
+] @keyword
+
+(adl (scoped_name)) @namespace
+(comment) @comment
+(doc_comment) @comment.block.documentation
+(name) @type
+
+(fname) @variable.other.member
+
+(type_expr (scoped_name) @type)
+
+(type_expr_params (param (scoped_name) @type.parameter))
+
+; json
+(key) @string.special
+
+(string) @string
+
+(number) @constant.numeric
+
+[
+ (null)
+ (true)
+ (false)
+] @constant.builtin
+
+(escape_sequence) @constant.character.escape
+
diff --git a/runtime/queries/adl/indents.scm b/runtime/queries/adl/indents.scm
new file mode 100644
index 00000000..1200d4d4
--- /dev/null
+++ b/runtime/queries/adl/indents.scm
@@ -0,0 +1,12 @@
+[
+ (struct)
+ (union)
+
+ (array)
+ (object)
+] @indent
+
+; [
+; "}"
+; "]"
+; ] @outdent
diff --git a/runtime/queries/adl/textobjects.scm b/runtime/queries/adl/textobjects.scm
new file mode 100644
index 00000000..36e39a2d
--- /dev/null
+++ b/runtime/queries/adl/textobjects.scm
@@ -0,0 +1 @@
+(struct (_) @function.inside) @funtion.around