[ "default" "pool" "rule" "build" ] @keyword [ "include" "subninja" ] @keyword.import ":" @punctuation.delimiter [ "=" "|" "||" "|@" ] @operator [ "$" "{" "}" ] @punctuation.special ; ; Names ; ===== (pool name: (identifier) @type) (rule name: (identifier) @function) (let name: (identifier) @constant) (expansion (identifier) @constant) (build rule: (identifier) @function) ; ; Paths and Text ; ============== (path) @string.special.path (text) @string ; ; Builtins ; ======== (pool name: (identifier) @type.builtin (#any-of? @type.builtin "console")) (build rule: (identifier) @function.builtin (#any-of? @function.builtin "phony" "dyndep")) ; Top level bindings ; ------------------ (manifest (let name: ((identifier) @constant.builtin (#any-of? @constant.builtin "builddir" "ninja_required_version")))) ; Rules bindings ; ----------------- (rule (body (let name: (identifier) @constant.builtin (#not-any-of? @constant.builtin "command" "depfile" "deps" "msvc_deps_prefix" "description" "dyndep" "generator" "in" "in_newline" "out" "restat" "rspfile" "rspfile_content" "pool")))) ; ; Expansion ; --------- (expansion (identifier) @constant.macro (#any-of? @constant.macro "in" "out")) ; ; Escape sequences ; ================ (quote) @string.escape ; ; Others ; ====== [ (split) (comment) ] @comment (comment) @spell