aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-02-23 16:06:47 -0500
committerObserverOfTime <chronobserver@disroot.org>2023-02-24 09:10:11 +0200
commitfceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0 (patch)
tree9dfed28bd785e27897326ec95314758eeb71e959
parentExtend injections for Lua to use query parser (diff)
downloadnvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar.gz
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar.bz2
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar.lz
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar.xz
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.tar.zst
nvim-treesitter-fceb4ed0ecaf56bac750a39fb0d05a6aa9a749c0.zip
feat: add dhall
-rw-r--r--lockfile.json3
-rw-r--r--lua/nvim-treesitter/parsers.lua8
-rw-r--r--queries/dhall/folds.scm14
-rw-r--r--queries/dhall/highlights.scm171
-rw-r--r--queries/dhall/injections.scm4
5 files changed, 200 insertions, 0 deletions
diff --git a/lockfile.json b/lockfile.json
index ad0a4f7ba..1b9623cdb 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -71,6 +71,9 @@
"devicetree": {
"revision": "ea30a05d0f0446a96d8b096ad11828ad4f8ad849"
},
+ "dhall": {
+ "revision": "affb6ee38d629c9296749767ab832d69bb0d9ea8"
+ },
"diff": {
"revision": "f69bde8e56f431863eba2fe4bab23e7d9692855f"
},
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index 7074cc363..7cd8c1e24 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -275,6 +275,14 @@ list.devicetree = {
maintainers = { "@jedrzejboczar" },
}
+list.dhall = {
+ install_info = {
+ url = "https://github.com/jbellerb/tree-sitter-dhall",
+ files = { "src/parser.c", "src/scanner.c" },
+ },
+ maintainers = { "@amaanq" },
+}
+
list.diff = {
install_info = {
url = "https://github.com/the-mikedavis/tree-sitter-diff",
diff --git a/queries/dhall/folds.scm b/queries/dhall/folds.scm
new file mode 100644
index 000000000..305079aa8
--- /dev/null
+++ b/queries/dhall/folds.scm
@@ -0,0 +1,14 @@
+[
+ (let_binding)
+
+ (application_expression)
+ (lambda_expression)
+
+ (record_type)
+ (union_type)
+
+ (list_literal)
+ (record_literal)
+
+ (block_comment)
+] @fold
diff --git a/queries/dhall/highlights.scm b/queries/dhall/highlights.scm
new file mode 100644
index 000000000..4bf79d090
--- /dev/null
+++ b/queries/dhall/highlights.scm
@@ -0,0 +1,171 @@
+;; Text
+
+;; Imports
+
+(missing_import) @include
+
+(local_import) @string.special.path
+
+(http_import) @string @text.uri
+
+[
+ (env_variable)
+ (import_hash)
+] @string.special
+
+[ (import_as_location) (import_as_text) ] @type
+
+;; Types
+
+([
+ (let_binding (label) @type)
+ (union_type_entry (label) @type)
+] (#match? @type "^[A-Z]"))
+
+((primitive_expression
+ (identifier (label) @type)
+ (selector (label) @type)) @variable
+ (#vim-match? @variable "^[A-Z][^.]*$"))
+
+;; Parameters
+
+(lambda_expression label: (label) @parameter)
+
+;; Variables
+
+(label) @variable
+
+(identifier [
+ (label) @variable
+ (de_bruijn_index) @operator
+])
+
+(let_binding label: (label) @variable)
+
+; Fields
+
+(record_literal_entry (label) @field)
+
+(record_type_entry (label) @field)
+
+(selector
+ (selector_dot)
+ (_) @field)
+
+;; Keywords
+
+(env_import) @keyword
+
+[
+ "let"
+ "in"
+ "assert"
+] @keyword
+
+[
+ "using"
+ "as"
+ "with"
+] @keyword.operator
+
+;; Operators
+
+[
+ (type_operator)
+ (assign_operator)
+ (lambda_operator)
+ (arrow_operator)
+ (infix_operator)
+ (completion_operator)
+ (assert_operator)
+ (forall_operator)
+ (empty_record_literal)
+] @operator
+
+;; Builtins
+
+(builtin_function) @function.builtin
+(builtin [
+ "Natural"
+ "Natural/build"
+ "Natural/fold"
+ "Natural/isZero"
+ "Natural/even"
+ "Natural/odd"
+ "Natural/subtract"
+ "Natural/toInteger"
+ "Natural/show"
+ "Integer"
+ "Integer/toDouble"
+ "Integer/show"
+ "Integer/negate"
+ "Integer/clamp"
+ "Double"
+ "Double/show"
+ "List"
+ "List/build"
+ "List/fold"
+ "List/length"
+ "List/head"
+ "List/last"
+ "List/indexed"
+ "List/reverse"
+ "Text"
+ "Text/show"
+ "Text/replace"
+ "Optional"
+ "Date"
+ "Time"
+ "TimeZone"
+ "Type"
+ "Kind"
+ "Sort"
+] @type.builtin)
+
+;; Punctuation
+
+[ "," "|" ] @punctuation.delimiter
+(selector_dot) @punctuation.delimiter
+
+[ "{" "}" ] @punctuation.bracket
+
+[ "[" "]" ] @punctuation.bracket
+
+[ "(" ")" ] @punctuation.bracket
+
+[ "<" ">" ] @punctuation.bracket
+
+;; Conditionals
+
+[
+ "if"
+ "then"
+ "else"
+] @conditional
+
+;; Literals
+
+(text_literal) @string
+(interpolation "}" @string)
+[
+ (double_quote_escaped)
+ (single_quote_escaped)
+] @string.escape
+
+[
+ (integer_literal)
+ (natural_literal)
+] @number
+
+(double_literal) @float
+
+(boolean_literal) @boolean
+
+(builtin "None") @constant.builtin
+
+;; Comments
+
+[
+ (line_comment)
+ (block_comment)
+] @comment @spell
diff --git a/queries/dhall/injections.scm b/queries/dhall/injections.scm
new file mode 100644
index 000000000..e48ce9af3
--- /dev/null
+++ b/queries/dhall/injections.scm
@@ -0,0 +1,4 @@
+[
+ (line_comment)
+ (block_comment)
+] @comment