@@ -1,9 +1,3 @@
1−(identifier) @variable
2−;; In case you want type highlighting based on Julia naming conventions (this might collide with mathematical notation)
3−;((identifier) @type ; exception: mark `A_foo` sort of identifiers as variables
4− ;(match? @type "^[A-Z][^_]"))
5−((identifier) @constant
6− (match? @constant "^[A-Z][A-Z_]{2}[A-Z_]*$"))
71
82[
93 (triple_string)
@@ -28,43 +22,43 @@
2822(call_expression
2923 (identifier) @function)
3024(call_expression
31− (field_expression (identifier) @method .))
25+ (field_expression (identifier) @function.method .))
3226(broadcast_call_expression
3327 (identifier) @function)
3428(broadcast_call_expression
35− (field_expression (identifier) @method .))
29+ (field_expression (identifier) @function.method .))
3630(parameter_list
37− (identifier) @parameter)
31+ (identifier) @variable.parameter)
3832(parameter_list
3933 (optional_parameter .
40− (identifier) @parameter))
34+ (identifier) @variable.parameter))
4135(typed_parameter
42− (identifier) @parameter
36+ (identifier) @variable.parameter
4337 (identifier) @type)
4438(type_parameter_list
4539 (identifier) @type)
4640(typed_parameter
47− (identifier) @parameter
41+ (identifier) @variable.parameter
4842 (parameterized_identifier) @type)
4943(function_expression
50− . (identifier) @parameter)
51−(spread_parameter) @parameter
44+ . (identifier) @variable.parameter)
45+(spread_parameter) @variable.parameter
5246(spread_parameter
53− (identifier) @parameter)
47+ (identifier) @variable.parameter)
5448(named_argument
55− . (identifier) @parameter)
49+ . (identifier) @variable.parameter)
5650(argument_list
5751 (typed_expression
58− (identifier) @parameter
52+ (identifier) @variable.parameter
5953 (identifier) @type))
6054(argument_list
6155 (typed_expression
62− (identifier) @parameter
56+ (identifier) @variable.parameter
6357 (parameterized_identifier) @type))
6458
6559;; Symbol expressions (:my-wanna-be-lisp-keyword)
6660(quote_expression
67− (identifier)) @symbol
61+ (identifier)) @string.special.symbol
6862
6963;; Parsing error! foo (::Type) get's parsed as two quote expressions
7064(argument_list
@@ -76,7 +70,7 @@
7670 (identifier) @type)
7771(parameterized_identifier (_)) @type
7872(argument_list
79− (typed_expression . (identifier) @parameter))
73+ (typed_expression . (identifier) @variable.parameter))
8074
8175(typed_expression
8276 (identifier) @type .)
@@ -113,13 +107,13 @@
113107"end" @keyword
114108
115109(if_statement
116− ["if" "end"] @conditional)
110+ ["if" "end"] @keyword.control.conditional)
117111(elseif_clause
118− ["elseif"] @conditional)
112+ ["elseif"] @keyword.control.conditional)
119113(else_clause
120− ["else"] @conditional)
114+ ["else"] @keyword.control.conditional)
121115(ternary_expression
122− ["?" ":"] @conditional)
116+ ["?" ":"] @keyword.control.conditional)
123117
124118(function_definition ["function" "end"] @keyword.function)
125119
@@ -134,47 +128,57 @@
134128 "type"
135129] @keyword
136130
137−((identifier) @keyword (#any-of? @keyword "global" "local"))
131+((identifier) @keyword (match? @keyword "global|local"))
138132
139133(compound_expression
140134 ["begin" "end"] @keyword)
141135(try_statement
142− ["try" "end" ] @exception)
136+ ["try" "end" ] @keyword.control.exception)
143137(finally_clause
144− "finally" @exception)
138+ "finally" @keyword.control.exception)
145139(catch_clause
146− "catch" @exception)
140+ "catch" @keyword.control.exception)
147141(quote_statement
148142 ["quote" "end"] @keyword)
149143(let_statement
150144 ["let" "end"] @keyword)
151145(for_statement
152− ["for" "end"] @repeat)
146+ ["for" "end"] @keyword.control.repeat)
153147(while_statement
154− ["while" "end"] @repeat)
155−(break_statement) @repeat
156−(continue_statement) @repeat
148+ ["while" "end"] @keyword.control.repeat)
149+(break_statement) @keyword.control.repeat
150+(continue_statement) @keyword.control.repeat
157151(for_binding
158− "in" @repeat)
152+ "in" @keyword.control.repeat)
159153(for_clause
160− "for" @repeat)
154+ "for" @keyword.control.repeat)
161155(do_clause
162156 ["do" "end"] @keyword)
163157
164158(export_statement
165− ["export"] @include)
159+ ["export"] @keyword.control.import)
166160
167161[
168162 "using"
169163 "module"
170164 "import"
171−] @include
165+] @keyword.control.import
172166
173−((identifier) @include (#eq? @include "baremodule"))
167+((identifier) @keyword.control.import (#eq? @keyword.control.import "baremodule"))
174168
175169(((identifier) @constant.builtin) (match? @constant.builtin "^(nothing|Inf|NaN)$"))
176−(((identifier) @boolean) (eq? @boolean "true"))
177−(((identifier) @boolean) (eq? @boolean "false"))
170+(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "true"))
171+(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "false"))
172+
178173
179174["::" ":" "." "," "..." "!"] @punctuation.delimiter
180175["[" "]" "(" ")" "{" "}"] @punctuation.bracket
176+
177+["="] @operator
178+
179+(identifier) @variable
180+;; In case you want type highlighting based on Julia naming conventions (this might collide with mathematical notation)
181+;((identifier) @type ; exception: mark `A_foo` sort of identifiers as variables
182+ ;(match? @type "^[A-Z][^_]"))
183+((identifier) @constant
184+ (match? @constant "^[A-Z][A-Z_]{2}[A-Z_]*$"))