Language support for dhall

https://dhall-lang.org/
This commit is contained in:
Clément Delafargue 2023-01-13 11:29:40 +01:00 committed by Michael Davis
parent 051cd786a4
commit 1f6809c9ce
4 changed files with 91 additions and 0 deletions

View file

@ -22,6 +22,7 @@
| d | ✓ | ✓ | ✓ | `serve-d` |
| dart | ✓ | | ✓ | `dart` |
| devicetree | ✓ | | | |
| dhall | ✓ | ✓ | | `dhall-lsp-server` |
| diff | ✓ | | | |
| dockerfile | ✓ | | | `docker-langserver` |
| dot | ✓ | | | `dot-language-server` |

View file

@ -2092,3 +2092,18 @@ comment-token = "//"
[[grammar]]
name = "ponylang"
source = { git = "https://github.com/mfelsche/tree-sitter-ponylang", rev = "ef66b151bc2604f431b5668fcec4747db4290e11" }
[[language]]
name = "dhall"
scope = "source.dhall"
injection-regex = "dhall"
file-types = ["dhall"]
roots = []
comment-token = "--"
indent = { tab-width = 2, unit = " " }
language-server = { command = "dhall-lsp-server" }
formatter = { command = "dhall" , args = ["format"] }
[[grammar]]
name = "dhall"
source = { git = "https://github.com/jbellerb/tree-sitter-dhall", rev = "affb6ee38d629c9296749767ab832d69bb0d9ea8" }

View file

@ -0,0 +1,52 @@
;; Literals
(integer_literal) @constant.numeric.integer
(natural_literal) @constant.numeric.integer
(double_literal) @constant.numeric.float
(boolean_literal) @constant.builtin.boolean
(text_literal) @string
(local_import) @string.special.path
(http_import) @string.special.url
(import_hash) @string
;; Comments
[
(line_comment)
(block_comment)
] @comment
;; Keywords
[
("let")
("in")
(assign_operator)
(type_operator)
(lambda_operator)
(arrow_operator)
(infix_operator)
(completion_operator)
("using")
("assert")
(assert_operator)
("as")
(forall_operator)
("with")
] @keyword
;; Builtins
[
(builtin_function)
(missing_import)
] @function.builtin
[
(builtin)
(import_as_text)
] @type.builtin
;; Conditionals
[
("if")
("then")
("else")
] @keyword.control.conditional

View file

@ -0,0 +1,23 @@
(lambda_expression
(label) @parameter.inside
(expression) @function.inside
) @function.around
(forall_expression
(label) @parameter.inside
(expression) @function.inside
) @function.around
(assert_expression
(expression) @test.inside
) @test.around
[
(block_comment_content)
(line_comment_content)
] @comment.inside
[
(block_comment)
(line_comment)
] @comment.around