@@ -1,45 +1,122 @@
1−(variable) @variable
1+;; ----------------------------------------------------------------------------
2−(operator) @operator
2+;; Literals and comments
3−(exp_name (constructor) @constructor)
3+
4−(constructor_operator) @operator
8−(constructor) @constructor
11−(signature name: (variable) @type)
12−(function name: (variable) @function)
13−(constraint class: (class_name (type)) @class)
14−(class (class_head class: (class_name (type)) @class))
15−(instance (instance_head class: (class_name (type)) @class))
16(integer) @constant.numeric.integer
4(integer) @constant.numeric.integer
5+(exp_negation) @constant.numeric.integer
17(exp_literal (float)) @constant.numeric.float
6(exp_literal (float)) @constant.numeric.float
18(char) @constant.character
7(char) @constant.character
19−(con_unit) @literal
8+(string) @string
21−(tycon_arrow) @operator
10+(con_unit) @constant.builtin ; unit, as in ()
23−"module" @keyword
12+(comment) @comment
26−"class" @keyword
15+;; ----------------------------------------------------------------------------
27−"instance" @keyword
16+;; Punctuation
45] @punctuation.bracket
25] @punctuation.bracket
30+] @punctuation.delimiter
33+;; ----------------------------------------------------------------------------
34+;; Keywords, operators, includes
36+(pragma) @constant.macro
44+] @keyword.control.conditional
50+] @keyword.control.import
54+ (constructor_operator)
57+ (qualified_module) ; grabs the `.` (dot), ex: import System.IO
71+(qualified_module (module) @constructor)
72+(qualified_type (module) @namespace)
73+(qualified_variable (module) @namespace)
74+(import (module) @namespace)
100+;; ----------------------------------------------------------------------------
101+;; Functions and variables
103+(signature name: (variable) @type)
104+(function name: (variable) @function)
107+"_" @variable.builtin
109+(exp_infix (variable) @operator) ; consider infix functions as operators
111+("@" @namespace) ; "as" pattern operator, e.g. x@Constructor
114+;; ----------------------------------------------------------------------------
119+(constructor) @constructor
122+((constructor) @_bool (#match? @_bool "(True|False)")) @constant.builtin.boolean