Julia queries: prevent constructors to be highlighted as functions

Also improves the captures of the remaining identifiers.
pull/3536/head
Christoph Horn 2 years ago committed by Michael Davis
parent 5806db1e5c
commit 26b2f0a1b5

@ -85,8 +85,11 @@
; Function definition ; Function definition
; ------------------- ; -------------------
(function_definition (
name: (identifier) @function) (function_definition
name: (identifier) @function)
; prevent constructors (PascalCase) to be highlighted as functions
(#match? @function "^[^A-Z]"))
(parameter_list (parameter_list
(identifier) @variable.parameter) (identifier) @variable.parameter)
@ -108,17 +111,26 @@
; Functions calls ; Functions calls
; --------------- ; ---------------
(call_expression (
(identifier) @function) (call_expression
(identifier) @function)
; prevent constructors (PascalCase) to be highlighted as functions
(#match? @function "^[^A-Z]"))
(broadcast_call_expression (
(identifier) @function) (broadcast_call_expression
(identifier) @function)
(#match? @function "^[^A-Z]"))
(call_expression (
(field_expression (identifier) @function .)) (call_expression
(field_expression (identifier) @function .))
(#match? @function "^[^A-Z]"))
(broadcast_call_expression (
(field_expression (identifier) @function .)) (broadcast_call_expression
(field_expression (identifier) @function .))
(#match? @function "^[^A-Z]"))
; ------ ; ------
; Macros ; Macros
@ -228,19 +240,25 @@
; Remaining identifiers ; Remaining identifiers
; --------------------- ; ---------------------
; could also be namespace but this should cover the majority
(field_expression
. (_)
(identifier) @variable.other.member)
(const_statement (const_statement
(variable_declaration (variable_declaration
. (identifier) @constant)) . (identifier) @constant))
((identifier) @type ; SCREAMING_SNAKE_CASE
(match? @type "([A-Z][a-z0-9]+)+$")) (
(identifier) @constant
(match? @constant "^[A-Z][A-Z0-9_]*$"))
; remaining identifiers that start with capital letters should be types (PascalCase)
(
(identifier) @type
(match? @type "^[A-Z]"))
((identifier) @constant ; Field expressions are either module content or struct fields.
(match? @constant "^[A-Z][A-Z0-9_]+$")) ; Module types and constants should already be captured, so this
; assumes the remaining identifiers to be struct fields.
(field_expression
(_)
(identifier) @variable.other.member)
(identifier) @variable (identifier) @variable

Loading…
Cancel
Save