Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/julia/highlights.scm')
-rw-r--r--runtime/queries/julia/highlights.scm515
1 files changed, 164 insertions, 351 deletions
diff --git a/runtime/queries/julia/highlights.scm b/runtime/queries/julia/highlights.scm
index f473d2ca..90baee21 100644
--- a/runtime/queries/julia/highlights.scm
+++ b/runtime/queries/julia/highlights.scm
@@ -1,48 +1,39 @@
-; ------------
-; Variables identifiers
-; ------------
+; ----------
+; Primitives
+; ----------
-(identifier) @variable
-
-; Remaining identifiers that start with capital letters should be types (PascalCase)
-(
- (identifier) @type
- (#match? @type "^[A-Z]"))
+[
+ (line_comment)
+ (block_comment)
+] @comment
-; SCREAMING_SNAKE_CASE
(
- (identifier) @constant
- (#match? @constant "^[A-Z][A-Z0-9_]*$"))
+ ((identifier) @constant.builtin)
+ (#match? @constant.builtin "^(nothing|missing|undef)$"))
-(const_statement
- (assignment
- . (identifier) @constant))
+[
+ (true)
+ (false)
+] @constant.builtin.boolean
-; Field expressions are either module content or struct fields.
-; Module types and constants should already be captured, so this
-; assumes the remaining identifiers to be struct fields.
-(field_expression
- (_)
- (identifier) @variable.other.member)
+(integer_literal) @constant.numeric.integer
+(float_literal) @constant.numeric.float
-(quote_expression
- ":" @string.special.symbol
- [
- (identifier)
- (operator)
- ] @string.special.symbol)
+(
+ ((identifier) @constant.numeric.float)
+ (#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
-; ------
-; Macros
-; ------
+(character_literal) @constant.character
+(escape_sequence) @constant.character.escape
-(macro_definition
- name: (identifier) @function.macro)
+(string_literal) @string
-(macro_identifier
- "@" @function.macro
- (identifier) @function.macro)
+(prefixed_string_literal
+ prefix: (identifier) @function.macro) @string
+(quote_expression
+ (identifier) @string.special.symbol)
+
; -------------------
; Modules and Imports
; -------------------
@@ -59,6 +50,49 @@
(scoped_identifier
(identifier) @namespace)
+; -----
+; Types
+; -----
+
+(abstract_definition
+ name: (identifier) @type)
+
+(primitive_definition
+ name: (identifier) @type)
+
+(struct_definition
+ name: (identifier) @type)
+
+(struct_definition
+ . (_)
+ (identifier) @variable.other.member)
+
+(struct_definition
+ . (_)
+ (typed_expression
+ . (identifier) @variable.other.member))
+
+(type_parameter_list
+ (identifier) @type)
+
+(constrained_type_parameter
+ (identifier) @type)
+
+(subtype_clause
+ (identifier) @type)
+
+(typed_expression
+ (identifier) @type . )
+
+(parameterized_identifier
+ (identifier) @type)
+
+(type_argument_list
+ (identifier) @type)
+
+(where_clause
+ (identifier) @type)
+
; -------------------
; Function definition
; -------------------
@@ -85,6 +119,22 @@
; prevent constructors (PascalCase) to be highlighted as functions
(#match? @function "^[^A-Z]"))
+(parameter_list
+ (identifier) @variable.parameter)
+
+(typed_parameter
+ (identifier) @variable.parameter
+ (identifier)? @type)
+
+(optional_parameter
+ . (identifier) @variable.parameter)
+
+(slurp_parameter
+ (identifier) @variable.parameter)
+
+(function_expression
+ . (identifier) @variable.parameter)
+
; ---------------
; Functions calls
; ---------------
@@ -96,13 +146,13 @@
(#match? @function "^[^A-Z]"))
(
- (call_expression
- (field_expression (identifier) @function .))
+ (broadcast_call_expression
+ (identifier) @function)
(#match? @function "^[^A-Z]"))
(
- (broadcast_call_expression
- (identifier) @function)
+ (call_expression
+ (field_expression (identifier) @function .))
(#match? @function "^[^A-Z]"))
(
@@ -110,277 +160,78 @@
(field_expression (identifier) @function .))
(#match? @function "^[^A-Z]"))
+; ------
+; Macros
+; ------
-; -------------------
-; Functions builtins
-; -------------------
-
-((identifier) @function.builtin
- (#any-of? @function.builtin
- "_abstracttype" "_apply_iterate" "_apply_pure" "_call_in_world" "_call_in_world_total"
- "_call_latest" "_equiv_typedef" "_expr" "_primitivetype" "_setsuper!" "_structtype" "_typebody!"
- "_typevar" "applicable" "apply_type" "arrayref" "arrayset" "arraysize" "const_arrayref"
- "donotdelete" "fieldtype" "get_binding_type" "getfield" "ifelse" "invoke" "isa" "isdefined"
- "modifyfield!" "nfields" "replacefield!" "set_binding_type!" "setfield!" "sizeof" "svec"
- "swapfield!" "throw" "tuple" "typeassert" "typeof"))
-
-; -----------
-; Parameters
-; -----------
-
-(parameter_list
- (identifier) @variable.parameter)
-
-(optional_parameter
- . (identifier) @variable.parameter)
-
-(slurp_parameter
- (identifier) @variable.parameter)
-
-(typed_parameter
- parameter: (identifier)? @variable.parameter
- type: (_) @type)
-
-(function_expression
- . (identifier) @variable.parameter) ; Single parameter arrow functions
-
-; -----
-; Types
-; -----
-
-; Definitions
-(abstract_definition
- name: (identifier) @type.definition) @keyword
-
-(primitive_definition
- name: (identifier) @type.definition) @keyword
-
-(struct_definition
- name: (identifier) @type)
-
-(struct_definition
- . (_)
- (identifier) @variable.other.member)
-
-(struct_definition
- . (_)
- (typed_expression
- . (identifier) @variable.other.member))
-
-(type_clause
- [
- (identifier) @type
- (field_expression
- (identifier) @type .)
- ])
-
-; Annotations
-(parametrized_type_expression
- (_) @type
- (curly_expression
- (_) @type))
-
-(type_parameter_list
- (identifier) @type)
-
-(typed_expression
- (identifier) @type . )
-
-(function_definition
- return_type: (identifier) @type)
-
-(short_function_definition
- return_type: (identifier) @type)
-
-(where_clause
- (identifier) @type)
-
-(where_clause
- (curly_expression
- (_) @type))
-
-; ---------
-; Builtins
-; ---------
-
-; This list was generated with:
-;
-; istype(x) = typeof(x) === DataType || typeof(x) === UnionAll
-; get_types(m) = filter(x -> istype(Base.eval(m, x)), names(m))
-; type_names = sort(union(get_types(Core), get_types(Base)))
-;
-((identifier) @type.builtin
- (#any-of? @type.builtin
- "AbstractArray" "AbstractChannel" "AbstractChar" "AbstractDict" "AbstractDisplay"
- "AbstractFloat" "AbstractIrrational" "AbstractLock" "AbstractMatch" "AbstractMatrix"
- "AbstractPattern" "AbstractRange" "AbstractSet" "AbstractSlices" "AbstractString"
- "AbstractUnitRange" "AbstractVecOrMat" "AbstractVector" "Any" "ArgumentError" "Array"
- "AssertionError" "Atomic" "BigFloat" "BigInt" "BitArray" "BitMatrix" "BitSet" "BitVector" "Bool"
- "BoundsError" "By" "CanonicalIndexError" "CapturedException" "CartesianIndex" "CartesianIndices"
- "Cchar" "Cdouble" "Cfloat" "Channel" "Char" "Cint" "Cintmax_t" "Clong" "Clonglong" "Cmd" "Colon"
- "ColumnSlices" "Complex" "ComplexF16" "ComplexF32" "ComplexF64" "ComposedFunction"
- "CompositeException" "ConcurrencyViolationError" "Condition" "Cptrdiff_t" "Cshort" "Csize_t"
- "Cssize_t" "Cstring" "Cuchar" "Cuint" "Cuintmax_t" "Culong" "Culonglong" "Cushort" "Cvoid"
- "Cwchar_t" "Cwstring" "DataType" "DenseArray" "DenseMatrix" "DenseVecOrMat" "DenseVector" "Dict"
- "DimensionMismatch" "Dims" "DivideError" "DomainError" "EOFError" "Enum" "ErrorException"
- "Exception" "ExponentialBackOff" "Expr" "Float16" "Float32" "Float64" "Function" "GlobalRef"
- "HTML" "IO" "IOBuffer" "IOContext" "IOStream" "IdDict" "IndexCartesian" "IndexLinear"
- "IndexStyle" "InexactError" "InitError" "Int" "Int128" "Int16" "Int32" "Int64" "Int8" "Integer"
- "InterruptException" "InvalidStateException" "Irrational" "KeyError" "LazyString" "LinRange"
- "LineNumberNode" "LinearIndices" "LoadError" "Lt" "MIME" "Matrix" "Method" "MethodError"
- "Missing" "MissingException" "Module" "NTuple" "NamedTuple" "Nothing" "Number" "Ordering"
- "OrdinalRange" "OutOfMemoryError" "OverflowError" "Pair" "ParseError" "PartialQuickSort" "Perm"
- "PermutedDimsArray" "Pipe" "ProcessFailedException" "Ptr" "QuoteNode" "Rational" "RawFD"
- "ReadOnlyMemoryError" "Real" "ReentrantLock" "Ref" "Regex" "RegexMatch" "Returns"
- "ReverseOrdering" "RoundingMode" "RowSlices" "SegmentationFault" "Set" "Signed" "Slices" "Some"
- "SpinLock" "StackFrame" "StackOverflowError" "StackTrace" "Stateful" "StepRange" "StepRangeLen"
- "StridedArray" "StridedMatrix" "StridedVecOrMat" "StridedVector" "String" "StringIndexError"
- "SubArray" "SubString" "SubstitutionString" "Symbol" "SystemError" "Task" "TaskFailedException"
- "Text" "TextDisplay" "Timer" "Tmstruct" "Tuple" "Type" "TypeError" "TypeVar" "UInt" "UInt128"
- "UInt16" "UInt32" "UInt64" "UInt8" "UndefInitializer" "UndefKeywordError" "UndefRefError"
- "UndefVarError" "Union" "UnionAll" "UnitRange" "Unsigned" "Val" "VecElement" "VecOrMat" "Vector"
- "VersionNumber" "WeakKeyDict" "WeakRef"))
-
-((identifier) @variable.builtin
- (#any-of? @variable.builtin "begin" "end"))
-
-((identifier) @variable.builtin
- (#any-of? @variable.builtin "begin" "end"))
+(macro_definition
+ name: (identifier) @function.macro)
+(macro_identifier
+ "@" @function.macro
+ (identifier) @function.macro)
; --------
; Keywords
; --------
-[
- "global"
- "local"
-] @keyword
-
-(compound_statement
- [
- "begin"
- "end"
- ] @keyword)
-
-(quote_statement
- [
- "quote"
- "end"
- ] @keyword)
-
-(let_statement
- [
- "let"
- "end"
- ] @keyword)
+(function_definition
+ ["function" "end"] @keyword.function)
(if_statement
- [
- "if"
- "end"
- ] @keyword.control.conditional)
-
+ ["if" "end"] @keyword.control.conditional)
(elseif_clause
- "elseif" @keyword.control.conditional)
-
+ ["elseif"] @keyword.control.conditional)
(else_clause
- "else" @keyword.control.conditional)
-
-(if_clause
- "if" @keyword.control.conditional) ; `if` clause in comprehensions
-
+ ["else"] @keyword.control.conditional)
(ternary_expression
- [
- "?"
- ":"
- ] @keyword.control.conditional)
+ ["?" ":"] @keyword.control.conditional)
-(try_statement
- [
- "try"
- "end"
- ] @keyword.control.exception)
+(for_statement
+ ["for" "end"] @keyword.control.repeat)
+(while_statement
+ ["while" "end"] @keyword.control.repeat)
+(break_statement) @keyword.control.repeat
+(continue_statement) @keyword.control.repeat
+(for_binding
+ "in" @keyword.control.repeat)
+(for_clause
+ "for" @keyword.control.repeat)
+(try_statement
+ ["try" "end" ] @keyword.control.exception)
(finally_clause
"finally" @keyword.control.exception)
-
(catch_clause
"catch" @keyword.control.exception)
-(for_statement
- [
- "for"
- "end"
- ] @keyword.control.repeat)
-
-(while_statement
- [
- "while"
- "end"
- ] @keyword.control.repeat)
-
-(for_clause
- "for" @keyword.control.repeat)
-
[
- (break_statement)
- (continue_statement)
-] @keyword.control.repeat
-
-(module_definition
- [
- "module"
- "baremodule"
- "end"
- ] @keyword.control.import)
-
-(import_statement
- [
- "import"
- "using"
- ] @keyword.control.import)
-
-(import_alias
- "as" @keyword.control.import)
-
-(export_statement
- "export" @keyword.control.import)
-
-(selected_import
- ":" @punctuation.delimiter)
-
-(struct_definition
- [
- "struct"
- "end"
- ] @keyword)
-
-(macro_definition
- [
- "macro"
- "end"
- ] @keyword)
-
-(function_definition
- [
- "function"
- "end"
- ] @keyword.function)
-
-(do_clause
- [
- "do"
- "end"
- ] @keyword.function)
-
-(return_statement
- "return" @keyword.control.return)
+ "export"
+ "import"
+ "using"
+] @keyword.control.import
[
+ "abstract"
+ "baremodule"
+ "begin"
"const"
+ "do"
+ "end"
+ "let"
+ "macro"
+ "module"
"mutable"
-] @keyword.storage.modifier
+ "primitive"
+ "quote"
+ "return"
+ "struct"
+ "type"
+ "where"
+] @keyword
+
+; TODO: fix this
+((identifier) @keyword (match? @keyword "global|local"))
; ---------
; Operators
@@ -388,34 +239,14 @@
[
(operator)
- "="
- "∈"
+ "::"
+ "<:"
+ ":"
+ "=>"
+ "..."
+ "$"
] @operator
-(adjoint_expression
- "'" @operator)
-
-(range_expression
- ":" @operator)
-
-((operator) @keyword.operator
- (#any-of? @keyword.operator "in" "isa"))
-
-(for_binding
- "in" @keyword.operator)
-
-(where_clause
- "where" @keyword.operator)
-
-(where_expression
- "where" @keyword.operator)
-
-(binary_expression
- (_)
- (operator) @operator
- (identifier) @function
- (#any-of? @operator "|>" ".|>"))
-
; ------------
; Punctuations
; ------------
@@ -424,58 +255,40 @@
"."
","
";"
- "::"
- "->"
] @punctuation.delimiter
-"..." @punctuation.special
-
[
- "("
- ")"
"["
"]"
+ "("
+ ")"
"{"
"}"
] @punctuation.bracket
-; ---------
-; Literals
-; ---------
-
-(boolean_literal) @constant.builtin.boolean
-
-(integer_literal) @constant.numeric.integer
+; ---------------------
+; Remaining identifiers
+; ---------------------
-(float_literal) @constant.numeric.float
+(const_statement
+ (variable_declaration
+ . (identifier) @constant))
+; SCREAMING_SNAKE_CASE
(
- ((identifier) @constant.numeric.float)
- (#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
+ (identifier) @constant
+ (match? @constant "^[A-Z][A-Z0-9_]*$"))
+; remaining identifiers that start with capital letters should be types (PascalCase)
(
- ((identifier) @constant.builtin)
- (#match? @constant.builtin "^(nothing|missing|undef)$"))
-
-(character_literal) @constant.character
-
-(escape_sequence) @constant.character.escape
-
-(string_literal) @string
-
-(prefixed_string_literal
- prefix: (identifier) @function.macro) @string
-
-(command_literal) @string
-
-(prefixed_command_literal
- prefix: (identifier) @function.macro) @string
+ (identifier) @type
+ (match? @type "^[A-Z]"))
-; ---------
-; Comments
-; ---------
+; Field expressions are either module content or struct fields.
+; Module types and constants should already be captured, so this
+; assumes the remaining identifiers to be struct fields.
+(field_expression
+ (_)
+ (identifier) @variable.other.member)
-[
- (line_comment)
- (block_comment)
-] @comment
+(identifier) @variable