diff --git a/languages.toml b/languages.toml --- a/languages.toml +++ b/languages.toml @@ -3859,7 +3859,7 @@ [[grammar]] name = "just" -source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "f749ec853adcacc5f14e9ec375f244104e033d88" } +source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "00859eebfb774d371af174ea1e582d46e697b469" } [[language]] name = "gn" @@ -5647,4 +5647,3 @@ [[grammar]] name = "batch" source = { git = "https://github.com/wharflab/tree-sitter-batch", rev = "5fc5f54267ef9a78e7a5319b80e092194252aabf" } - diff --git a/runtime/queries/just/highlights.scm b/runtime/queries/just/highlights.scm --- a/runtime/queries/just/highlights.scm +++ b/runtime/queries/just/highlights.scm @@ -10,6 +10,8 @@ [ "alias" + "assert" + "eager" "set" "shell" ] @keyword @@ -18,11 +20,6 @@ "if" "else" ] @keyword.control.conditional - -[ - "&&" - "||" -] @operator ; Variables @@ -42,6 +39,9 @@ ; Functions +(function + name: (identifier) @function) + (recipe name: (identifier) @function) @@ -52,6 +52,12 @@ name: (identifier) @function.builtin) ; Parameters + +(attribute_named_parameter + name: (identifier) @variable.parameter) + +(function_decl_parameters + (identifier) @variable.parameter) (recipe_parameter name: (identifier) @variable.parameter) @@ -78,7 +84,6 @@ (shebang_line (shebang_shell) @string.special) - (shell_expanded_string [ (expansion_short_start) @@ -90,23 +95,26 @@ ; Operators [ - ":=" - "?" - "==" - "!=" - "=~" - "!~" - "@" - "=" - "$" - "*" - "+" - "&&" - "@-" - "-@" "-" - "/" + "-@" ":" + ":=" + "!" + "!=" + "!~" + "?" + "@-" + "@" + "*" + "/" + "&&" + "+" + "++" + "=" + "==" + "=~" + "||" + "$" ] @operator ; Punctuation diff --git a/runtime/queries/just/injections.scm b/runtime/queries/just/injections.scm --- a/runtime/queries/just/injections.scm +++ b/runtime/queries/just/injections.scm @@ -10,6 +10,13 @@ (_) @injection.content) (#set! injection.language "regex")) +; Highlight the value of attribute `[arg(pattern = "...")]` as regex +(attribute_named_parameter + name: (identifier) @_name + value: (expression (value (string) @injection.content + (#set! injection.language "regex"))) + (#match? @_name "^pattern$")) + ; ================ Global defaults ================ ; Default recipe lines to be bash, but exclude interpolation nodes diff --git a/runtime/queries/just/locals.scm b/runtime/queries/just/locals.scm --- a/runtime/queries/just/locals.scm +++ b/runtime/queries/just/locals.scm @@ -13,6 +13,9 @@ (assignment name: (identifier) @local.definition.variable) +(function + name: (identifier) @local.definition.function) + (mod name: (identifier) @local.definition.namespace) diff --git a/runtime/queries/just/tags.scm b/runtime/queries/just/tags.scm --- a/runtime/queries/just/tags.scm +++ b/runtime/queries/just/tags.scm @@ -6,6 +6,9 @@ (assignment name: (identifier) @definition.constant) +(function + name: (identifier) @definition.function) + (import (path) @definition.module) diff --git a/runtime/queries/just/textobjects.scm b/runtime/queries/just/textobjects.scm --- a/runtime/queries/just/textobjects.scm +++ b/runtime/queries/just/textobjects.scm @@ -3,6 +3,12 @@ (assert_parameters ((_) @parameter.inside . ","? @parameter.around)) @parameter.around +(function + (expression) @function.inside) @function.around + +(function_decl_parameters + ((_) @parameter.inside . ","? @parameter.around)) @parameter.around + (recipe (recipe_body) @function.inside) @function.around @@ -13,7 +19,7 @@ (_) @parameter.inside) @parameter.around (function_call - (function_parameters + (function_call_parameters ((_) @parameter.inside . ","? @parameter.around)) @parameter.around) @function.around (comment) @comment.around