aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/dhall
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/dhall
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/dhall')
-rw-r--r--runtime/queries/dhall/folds.scm10
-rw-r--r--runtime/queries/dhall/highlights.scm200
-rw-r--r--runtime/queries/dhall/injections.scm5
3 files changed, 215 insertions, 0 deletions
diff --git a/runtime/queries/dhall/folds.scm b/runtime/queries/dhall/folds.scm
new file mode 100644
index 000000000..bc92797b4
--- /dev/null
+++ b/runtime/queries/dhall/folds.scm
@@ -0,0 +1,10 @@
+[
+ (let_binding)
+ (application_expression)
+ (lambda_expression)
+ (record_type)
+ (union_type)
+ (list_literal)
+ (record_literal)
+ (block_comment)
+] @fold
diff --git a/runtime/queries/dhall/highlights.scm b/runtime/queries/dhall/highlights.scm
new file mode 100644
index 000000000..d7a5d0006
--- /dev/null
+++ b/runtime/queries/dhall/highlights.scm
@@ -0,0 +1,200 @@
+; Imports
+(missing_import) @keyword.import
+
+(local_import) @string.special.path
+
+(http_import) @string.special.url
+
+[
+ (env_variable)
+ (import_hash)
+] @string.special
+
+[
+ (import_as_bytes)
+ (import_as_location)
+ (import_as_text)
+] @type
+
+; Types
+([
+ (let_binding
+ (label) @type)
+ (union_type_entry
+ (label) @type)
+]
+ (#lua-match? @type "^%u"))
+
+((primitive_expression
+ (identifier
+ (label) @type)
+ (selector
+ (label) @type)) @variable
+ (#lua-match? @variable "^[A-Z][^.]*$"))
+
+; Parameters
+(lambda_expression
+ label: (label) @variable.parameter)
+
+; Variables
+(label) @variable
+
+(identifier
+ [
+ (label) @variable
+ (de_bruijn_index) @operator
+ ])
+
+(let_binding
+ label: (label) @variable)
+
+; Fields
+(record_literal_entry
+ (label) @variable.member)
+
+(record_type_entry
+ (label) @variable.member)
+
+(selector
+ (selector_dot)
+ (_) @variable.member)
+
+; 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
+ [
+ "Bool"
+ "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"
+ "Date/show"
+ "Time"
+ "Time/show"
+ "TimeZone"
+ "TimeZone/show"
+ "Type"
+ "Kind"
+ "Sort"
+ ] @type.builtin)
+
+; Punctuation
+[
+ ","
+ "|"
+] @punctuation.delimiter
+
+(selector_dot) @punctuation.delimiter
+
+[
+ "{"
+ "}"
+] @punctuation.bracket
+
+[
+ "["
+ "]"
+] @punctuation.bracket
+
+[
+ "("
+ ")"
+] @punctuation.bracket
+
+[
+ "<"
+ ">"
+] @punctuation.bracket
+
+; Conditionals
+[
+ "if"
+ "then"
+ "else"
+] @keyword.conditional
+
+; Literals
+[
+ (text_literal)
+ (bytes_literal)
+] @string
+
+(interpolation
+ "}" @string)
+
+[
+ (double_quote_escaped)
+ (single_quote_escaped)
+] @string.escape
+
+[
+ (integer_literal)
+ (natural_literal)
+] @number
+
+(double_literal) @number.float
+
+(boolean_literal) @boolean
+
+(builtin
+ "None") @constant.builtin
+
+; Comments
+[
+ (line_comment)
+ (block_comment)
+] @comment @spell
diff --git a/runtime/queries/dhall/injections.scm b/runtime/queries/dhall/injections.scm
new file mode 100644
index 000000000..3cd6aac8e
--- /dev/null
+++ b/runtime/queries/dhall/injections.scm
@@ -0,0 +1,5 @@
+([
+ (line_comment)
+ (block_comment)
+] @injection.content
+ (#set! injection.language "comment"))