Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/snakemake/highlights.scm')
| -rwxr-xr-x | runtime/queries/snakemake/highlights.scm | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/runtime/queries/snakemake/highlights.scm b/runtime/queries/snakemake/highlights.scm new file mode 100755 index 00000000..18d81811 --- /dev/null +++ b/runtime/queries/snakemake/highlights.scm @@ -0,0 +1,76 @@ +; inherits: python + +; Compound directives +[ + "rule" + "checkpoint" + "module" +] @keyword + +; Top level directives (eg. configfile, include) +(module + (directive + name: _ @keyword)) + +; Subordinate directives (eg. input, output) +((_) + body: (_ + (directive + name: _ @label))) + +; rule/module/checkpoint names +(rule_definition + name: (identifier) @type) + +(module_definition + name: (identifier) @type) + +(checkpoint_definition + name: (identifier) @type) + +; Rule imports +(rule_import + "use" @keyword.import + "rule" @keyword.import + "from" @keyword.import + "exclude"? @keyword.import + "as"? @keyword.import + "with"? @keyword.import) + +; Rule inheritance +(rule_inheritance + "use" @keyword + "rule" @keyword + "with" @keyword) + +; Wildcard names +(wildcard (identifier) @variable) +(wildcard (flag) @variable.parameter.builtin) + +; builtin variables +((identifier) @variable.builtin + (#any-of? @variable.builtin "checkpoints" "config" "gather" "rules" "scatter" "workflow")) + +; References to directive labels in wildcard interpolations +; the #any-of? queries are moved above the #has-ancestor? queries to +; short-circuit the potentially expensive tree traversal, if possible +; see: +; https://github.com/nvim-treesitter/nvim-treesitter/pull/4302#issuecomment-1685789790 +; directive labels in wildcard context +((wildcard + (identifier) @label) + (#any-of? @label "input" "log" "output" "params" "resources" "threads" "wildcards")) + +((wildcard + (attribute + object: (identifier) @label)) + (#any-of? @label "input" "log" "output" "params" "resources" "threads" "wildcards")) + +((wildcard + (subscript + value: (identifier) @label)) + (#any-of? @label "input" "log" "output" "params" "resources" "threads" "wildcards")) + +; directive labels in block context (eg. within 'run:') +((identifier) @label + (#any-of? @label "input" "log" "output" "params" "resources" "threads" "wildcards")) |