Files
helix/runtime/queries/p/highlights.scm

220 lines
2.6 KiB
Scheme

; Variables
(iden_type
name: (identifier) @variable)
(fun_param
name: (identifier) @variable.parameter)
[
"this"
] @variable.builtin
(named_tuple_access_expr
(expr
(primitive_expr
(identifier)))
field: (identifier) @variable.other.member)
; Functions
(p_fun_decl
name: (identifier) @function)
[
"choose"
"format"
"keys"
"values"
] @function.builtin
; Comments
[
(block_comment)
(line_comment)
] @comment
; Types
[
"any"
"bool"
"eventset"
"float"
"int"
"interface"
"map"
"set"
"string"
"seq"
"data"
] @type.builtin
; Type definitions
(type_def_decl
name: (identifier) @type.definition)
(enum_type_def_decl
name: (identifier) @type.definition)
(event_decl
name: (identifier) @type.definition)
(impl_machine_decl
name: (identifier) @type.definition)
(spec_machine_decl
name: (identifier) @type.definition)
(state_decl
name: (identifier) @type.definition)
(named_type
name: (identifier) @type)
(state_name
state: (identifier) @type)
(enum_elem
name: (identifier) @type)
(non_default_event
(identifier) @type)
(event_id
(identifier) @type)
; Keywords
[
"announce"
"as"
"assert"
"break"
"case"
"continue"
"default"
"defer"
"do"
"entry"
"exit"
"foreach"
"goto"
"halt"
"ignore"
"in"
"new"
"observes"
"on"
"print"
"raise"
"receive"
"send"
"sizeof"
"spec"
"start"
"state"
"var"
"param"
"pairwise"
"wise"
"with"
; PVerifier keywords
"invariant"
"axiom"
"is"
"inflight"
"targets"
"sent"
"Proof"
"prove"
"using"
"Lemma"
"Theorem"
"except"
"requires"
"ensures"
"forall"
"exists"
"init-condition"
"pure"
"assume"
; module-system-specific keywords
; module-test-implementation declarations
"module"
"implementation"
"test"
"refines"
; module constructors
"compose"
"union"
"hidee"
"hidei"
"rename"
"main"
; machine annotations
"receives"
"sends"
; common keywords
"creates"
"to"
(temperature_hot)
(temperature_cold)
(null_literal)
] @keyword
[ "fun" ] @keyword.function
[
"enum"
"event"
"machine"
"type"
] @keyword.storage.type
[ "while" ] @keyword.control.repeat
[ "return" ] @keyword.control.return
[
"if"
"else"
] @keyword.control.conditional
; Literals
[ (bool_literal) ] @constant.builtin.boolean
(int_literal) @constant.numeric.integer
(float_literal) @constant.numeric.float
(string_literal) @string
; Symbols / Operators
[
"$$"
"$"
"!"
"&&"
"||"
"==>"
"<==>"
"=="
"!="
"<="
">="
"<"
">"
"->"
"="
"+="
"-="
"+"
"-"
"*"
"/"
"%"
] @operator
[
":"
";"
","
"."
] @punctuation.delimiter
[
"{"
"}"
"["
"]"
"("
")"
] @punctuation.bracket