aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries')
-rw-r--r--runtime/queries/dhall/highlights.scm108
-rw-r--r--runtime/queries/dhall/injections.scm2
2 files changed, 85 insertions, 25 deletions
diff --git a/runtime/queries/dhall/highlights.scm b/runtime/queries/dhall/highlights.scm
index 52ede310..0663bbd9 100644
--- a/runtime/queries/dhall/highlights.scm
+++ b/runtime/queries/dhall/highlights.scm
@@ -1,52 +1,110 @@
;; Literals
-
(integer_literal) @constant.numeric.integer
(natural_literal) @constant.numeric.integer
(double_literal) @constant.numeric.float
(boolean_literal) @constant.builtin.boolean
+(builtin "None") @constant.builtin
+
+;; Text
(text_literal) @string
+(interpolation "}" @string)
+(double_quote_escaped) @constant.character.escape
+(single_quote_escaped) @constant.character.escape
+
+;; Imports
(local_import) @string.special.path
(http_import) @string.special.url
-(import_hash) @string
+(env_import) @keyword
+(env_variable) @string.special
+(import_hash) @string.special
+(missing_import) @keyword.control.import
+[ (import_as_location) (import_as_text) ] @type
;; Comments
-[
- (line_comment)
- (block_comment)
-] @comment
+(block_comment) @comment.block
+(line_comment) @comment.line
+
+;; Types
+([
+ (let_binding (label) @type)
+ (union_type_entry (label) @type)
+] (#match? @type "^[A-Z]"))
+((primitive_expression
+ (identifier (label) @type)
+ (selector (label) @type)?) @whole_identifier
+ (#match? @whole_identifier "(?:^|\\.)[A-Z][^.]*$"))
+
+;; Variables
+(identifier [
+ (label) @variable
+ (de_bruijn_index) @operator
+])
+(let_binding label: (label) @variable)
+(lambda_expression label: (label) @variable.parameter)
+(record_literal_entry (label) @variable.other.member)
+(record_type_entry (label) @variable.other.member)
+(selector) @variable.other.member
;; Keywords
[
- ("let")
- ("in")
- (assign_operator)
+ "let"
+ "in"
+ "assert"
+] @keyword
+[
+ "using"
+ "as"
+ "with"
+] @keyword.operator
+
+;; Operators
+[
(type_operator)
+ (assign_operator)
(lambda_operator)
(arrow_operator)
(infix_operator)
(completion_operator)
- ("using")
- ("assert")
(assert_operator)
- ("as")
(forall_operator)
- ("with")
-] @keyword
+ (empty_record_literal)
+] @operator
;; Builtins
-[
- (builtin_function)
- (missing_import)
-] @function.builtin
+(builtin_function) @function.builtin
+(builtin [
+ "Bool"
+ "Optional"
+ "Natural"
+ "Integer"
+ "Double"
+ "Text"
+ "Date"
+ "Time"
+ "TimeZone"
+ "List"
+ "Type"
+ "Kind"
+ "Sort"
+] @type.builtin)
-[
- (builtin)
- (import_as_text)
-] @type.builtin
+;; Punctuation
+[ "," "|" ] @punctuation.delimiter
+(selector_dot) @punctuation.delimiter
+[
+ "("
+ ")"
+ "{"
+ "}"
+ "["
+ "]"
+ "<"
+ ">"
+] @punctuation.bracket
;; Conditionals
[
- ("if")
- ("then")
- ("else")
+ "if"
+ "then"
+ "else"
] @keyword.control.conditional
diff --git a/runtime/queries/dhall/injections.scm b/runtime/queries/dhall/injections.scm
new file mode 100644
index 00000000..0164f684
--- /dev/null
+++ b/runtime/queries/dhall/injections.scm
@@ -0,0 +1,2 @@
+([(block_comment) (line_comment)] @injection.content
+ (#set! injection.language "comment"))