aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaden2022-08-24 14:51:10 +0000
committerGitHub2022-08-24 14:51:10 +0000
commit2b16fd43f901753fcedd87b9687ce535c4108203 (patch)
treed1eb1e15aee588d75ffa8f335b06b943ad03be69
parentccae718a67f39542281125610764b733d90b26f8 (diff)
feat(lang): Add esdl grammar (#3526)
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml13
-rw-r--r--runtime/queries/esdl/highlights.scm74
3 files changed, 88 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 62d7a04f..12a42931 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -24,6 +24,7 @@
| elvish | ✓ | | | `elvish` |
| erb | ✓ | | | |
| erlang | ✓ | ✓ | | `erlang_ls` |
+| esdl | ✓ | | | |
| fish | ✓ | ✓ | ✓ | |
| fortran | ✓ | | ✓ | `fortls` |
| gdscript | ✓ | | ✓ | |
diff --git a/languages.toml b/languages.toml
index cf834d35..cfacf27f 100644
--- a/languages.toml
+++ b/languages.toml
@@ -1664,3 +1664,16 @@ indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "xit"
source = { git = "https://github.com/synaptiko/tree-sitter-xit", rev = "7d7902456061bc2ad21c64c44054f67b5515734c" }
+
+[[language]]
+name = "esdl"
+scope = "source.esdl"
+injection-regex = "esdl"
+file-types = ["esdl"]
+comment-token = "#"
+indent = { tab-width = 2, unit = " " }
+roots = ["edgedb.toml"]
+
+[[grammar]]
+name ="esdl"
+source = { git = "https://github.com/greym0uth/tree-sitter-esdl", rev = "b840c8a8028127e0a7c6e6c45141adade2bd75cf" }
diff --git a/runtime/queries/esdl/highlights.scm b/runtime/queries/esdl/highlights.scm
new file mode 100644
index 00000000..7dfde022
--- /dev/null
+++ b/runtime/queries/esdl/highlights.scm
@@ -0,0 +1,74 @@
+; Keywords
+[
+ "module"
+ "using"
+ "single"
+ "multi"
+ "link"
+ "property"
+ "constraint"
+ "tuple"
+ "annotation"
+ "abstract"
+ "scalar"
+ "type"
+ "required"
+ "optional"
+ "extension"
+ "function"
+] @keyword
+
+(modifier) @keyword
+(extending) @keyword
+
+(module name: (identifier) @namespace)
+(object_type) @type
+
+(comment) @comment
+
+; Properties
+(property) @variable.other.member
+(link) @variable.other.member
+(annotation) @variable.other.member
+
+(identifier) @variable
+(string) @string
+(edgeql_fragment) @string
+; Builtins
+
+(type) @type
+[
+ "str"
+ "bool"
+ "int16"
+ "int32"
+ "int64"
+ "float32"
+ "float64"
+ "bigint"
+ "decimal"
+ "json"
+ "uuid"
+ "bytes"
+ "datetime"
+ "duration"
+ "sequence"
+ "anytype"
+] @type.builtin
+
+(true) @constant.builtin
+(false) @constant.builtin
+(null) @constant.builtin
+
+; Delimiters
+[
+ ";"
+ ","
+] @punctuation.delimiter
+
+; Operators
+[
+ "->"
+ ":="
+] @operator
+