From ff095ebd9b47bd5b06f16baca8dea9202f8d3c68 Mon Sep 17 00:00:00 2001
From: ghashy <109857267+ghashy@users.noreply.github.com>
Date: Wed, 22 Nov 2023 20:27:25 +0300
Subject: [PATCH] DBML Language support (#8860)

* DBML language support

* DBML language support, highlights.scm added

* DBML support

* Update runtime/queries/dbml/highlights.scm

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* Update runtime/queries/dbml/highlights.scm

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* Update runtime/queries/dbml/highlights.scm

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* remove unnecessary block highlight

* remove unnecessary line

* remove index_block query

---------

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---
 book/src/generated/lang-support.md  |  1 +
 languages.toml                      | 12 ++++++++
 runtime/queries/dbml/highlights.scm | 44 +++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)
 create mode 100644 runtime/queries/dbml/highlights.scm

diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index f93624f6..c21ca250 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -24,6 +24,7 @@
 | cue | ✓ |  |  | `cuelsp` |
 | d | ✓ | ✓ | ✓ | `serve-d` |
 | dart | ✓ |  | ✓ | `dart` |
+| dbml | ✓ |  |  |  |
 | devicetree | ✓ |  |  |  |
 | dhall | ✓ | ✓ |  | `dhall-lsp-server` |
 | diff | ✓ |  |  |  |
diff --git a/languages.toml b/languages.toml
index afbf3455..ef4687af 100644
--- a/languages.toml
+++ b/languages.toml
@@ -2930,3 +2930,15 @@ language-servers = [ "templ" ]
 [[grammar]]
 name = "templ"
 source = { git = "https://github.com/vrischmann/tree-sitter-templ", rev = "ea56ac0655243490a4929a988f4eaa91dfccc995" }
+
+[[language]]
+name = "dbml"
+scope = "source.dbml"
+injection-regex = "dbml"
+file-types = ["dbml"]
+comment-token = ";"
+indent = { tab-width = 2, unit = "  " }
+
+[[grammar]]
+name = "dbml"
+source = { git = "https://github.com/dynamotn/tree-sitter-dbml", rev = "2e2fa5640268c33c3d3f27f7e676f631a9c68fd9" }
diff --git a/runtime/queries/dbml/highlights.scm b/runtime/queries/dbml/highlights.scm
new file mode 100644
index 00000000..accc65b4
--- /dev/null
+++ b/runtime/queries/dbml/highlights.scm
@@ -0,0 +1,44 @@
+
+; comments highlighting
+(comment) @comment
+
+; keyword highlighting
+(keyword_def) @keyword
+(keyword_enum) @keyword
+(keyword_ref) @keyword
+
+; identify blocks and definitions
+(definition) @function
+
+; for identifiers
+(identifier) @variable
+(type) @keyword
+
+; Highlight special types for database/data types
+("Project" ) @type
+("Table" ) @type
+("TableGroup" ) @type
+("database_type" ) @variable
+
+; string and number constants
+("'''") @constant.character.escape
+(string) @string
+(number) @constant.numeric
+
+; brackets
+[
+  "("
+  ")"
+  "{"
+  "}"
+  "["
+  "]"
+] @punctuation.bracket
+
+; brackets
+[
+  ":"
+  "."
+  ","
+] @punctuation.delimiter
+