nixos/home-modules/explicit-configs/nvim/after/queries/roc/highlights.scm

177 lines
2.5 KiB
Scheme

;---Most generic types---
(module) @module
(identifier) @variable
(concrete_type) @type
;---annotations----
(annotation_type_def
(annotation_pre_colon
(identifier) @type))
(annotation_type_def
(annotation_pre_colon
(identifier) @function)
(function_type))
;----decleration types----
(value_declaration
(decl_left
(identifier_pattern
(identifier) @variable.parameter)))
;---records----
(field_name) @variable.member
(record_field_pattern
(_
(identifier) @variable))
;matches the second identifier and all subsequent ones
(field_access_expr
(identifier) @variable.member)
;highlight module members as records instead of free variables
; avoids highlighting them as out-of-scope vars
(variable_expr
(module) (identifier) @variable.member)
;----comments----
(line_comment) @comment @spell
(doc_comment) @comment.documentation @spell
;-----Punctuation----
[
"?"
(arrow)
(fat_arrow)
"|"
","
":"
] @punctuation.delimiter
[
"("
")"
"{"
"}"
"["
"]"
] @punctuation.bracket
[
"|"
"&"
"<-"
".."
(operator)
] @operator
(wildcard_pattern) @constant.builtin
[
"if"
"then"
"else"
] @keyword.conditional
[
(implements)
(when)
(is)
"as"
(to)
] @keyword
;----headers-----
[
"app"
"expect"
"module"
"package"
"import"
] @keyword
[
(import_as)
"imports"
] @keyword.import
(value_declaration
(decl_left
(identifier_pattern
(identifier) @function))
(expr_body
(anon_fun_expr)))
;----tags----
(tags_type
(tag_type) @constructor)
[
(tag)
(opaque_tag)
] @constructor
;-----builtins----
(variable_expr
(module) @module
(identifier) @boolean
(#any-of? @boolean "true" "false")
(#eq? @module "Bool"))
"dbg" @keyword.debug
;----function invocations ----
(function_call_pnc_expr
caller: (variable_expr
(identifier) @function.call))
(function_call_pnc_expr
caller: (field_access_expr
(identifier) @function.call .))
(bin_op_expr
(operator
"|>") @operator
(variable_expr
(identifier) @function))
;----function arguments----
(argument_patterns
(identifier_pattern
(identifier) @variable.parameter))
(argument_patterns
(_
(identifier_pattern
(identifier) @variable.parameter)))
(argument_patterns
(_
(_
(identifier_pattern
(identifier) @variable.parameter))))
;-----consts-----
[
(int)
(uint)
(iint)
(xint)
(natural)
] @number
[
(decimal)
(float)
] @number.float
(string) @string
(multiline_string) @string
(char) @character