diff --git a/languages.toml b/languages.toml index 061d141449d2..41558e10e9ad 100644 --- a/languages.toml +++ b/languages.toml @@ -604,7 +604,7 @@ indent = { tab-width = 4, unit = " " } [[grammar]] name = "julia" -source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "fc60b7cce87da7a1b7f8cb0f9371c3dc8b684500" } +source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "8fb38abff74652c4faddbf04d2d5bbbc6b4bae25" } [[language]] name = "java" diff --git a/runtime/queries/julia/highlights.scm b/runtime/queries/julia/highlights.scm index 9271615fbb1b..90baee21355d 100644 --- a/runtime/queries/julia/highlights.scm +++ b/runtime/queries/julia/highlights.scm @@ -7,13 +7,22 @@ (block_comment) ] @comment -(((identifier) @constant.builtin) (match? @constant.builtin "^(nothing|missing|Inf|NaN)$")) -(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "true")) -(((identifier) @constant.builtin.boolean) (#eq? @constant.builtin.boolean "false")) +( + ((identifier) @constant.builtin) + (#match? @constant.builtin "^(nothing|missing|undef)$")) + +[ + (true) + (false) +] @constant.builtin.boolean (integer_literal) @constant.numeric.integer (float_literal) @constant.numeric.float +( + ((identifier) @constant.numeric.float) + (#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$")) + (character_literal) @constant.character (escape_sequence) @constant.character.escape @@ -66,7 +75,7 @@ (type_parameter_list (identifier) @type) -(constrained_parameter +(constrained_type_parameter (identifier) @type) (subtype_clause @@ -81,13 +90,32 @@ (type_argument_list (identifier) @type) +(where_clause + (identifier) @type) + ; ------------------- ; Function definition ; ------------------- ( (function_definition - name: (identifier) @function) + name: [ + (identifier) @function + (scoped_identifier + (identifier) @namespace + (identifier) @function) + ]) + ; prevent constructors (PascalCase) to be highlighted as functions + (#match? @function "^[^A-Z]")) + +( + (short_function_definition + name: [ + (identifier) @function + (scoped_identifier + (identifier) @namespace + (identifier) @function) + ]) ; prevent constructors (PascalCase) to be highlighted as functions (#match? @function "^[^A-Z]")) @@ -101,7 +129,7 @@ (optional_parameter . (identifier) @variable.parameter) -(spread_parameter +(slurp_parameter (identifier) @variable.parameter) (function_expression @@ -185,6 +213,7 @@ [ "abstract" + "baremodule" "begin" "const" "do" @@ -198,6 +227,7 @@ "return" "struct" "type" + "where" ] @keyword ; TODO: fix this diff --git a/runtime/queries/julia/locals.scm b/runtime/queries/julia/locals.scm index 07b96f2c66e1..70b31e50924b 100644 --- a/runtime/queries/julia/locals.scm +++ b/runtime/queries/julia/locals.scm @@ -21,7 +21,7 @@ (optional_parameter . (identifier) @local.definition) -(spread_parameter +(slurp_parameter (identifier) @local.definition) (function_expression @@ -33,6 +33,7 @@ [ (function_definition) + (short_function_definition) (macro_definition) ] @local.scope