nvim-treesitter/runtime/queries/snakemake/highlights.scm

83 lines
1.9 KiB
Scheme
Raw Normal View History

2023-09-13 03:29:22 +02:00
; inherits: python
2024-01-06 15:05:50 +09:00
; 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))
2024-01-06 15:05:50 +09:00
; rule/module/checkpoint names
(rule_definition
name: (identifier) @type)
(module_definition
name: (identifier) @type)
(checkpoint_definition
name: (identifier) @type)
; Rule imports
2023-09-13 03:29:22 +02:00
(rule_import
[
"use"
"rule"
"from"
"exclude"
"as"
"with"
] @keyword.import)
2023-09-13 03:29:22 +02:00
2024-01-06 15:05:50 +09:00
; Rule inheritance
2023-09-13 03:29:22 +02:00
(rule_inheritance
"use" @keyword
"rule" @keyword
2024-01-06 15:05:50 +09:00
"with" @keyword)
2023-09-13 03:29:22 +02:00
2024-01-06 15:05:50 +09:00
; Wildcard names
(wildcard
(identifier) @variable)
(wildcard
2024-07-20 22:17:30 +02:00
(flag) @variable.parameter.builtin)
2023-09-13 03:29:22 +02:00
2024-01-06 15:05:50 +09:00
; builtin variables
2023-09-13 03:29:22 +02:00
((identifier) @variable.builtin
(#any-of? @variable.builtin "checkpoints" "config" "gather" "rules" "scatter" "workflow"))
2024-01-06 15:05:50 +09:00
; 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" "jobid" "log" "output" "params" "resources" "rule" "threads" "wildcards"))
2024-01-06 15:05:50 +09:00
((wildcard
(attribute
object: (identifier) @label))
(#any-of? @label "input" "jobid" "log" "output" "params" "resources" "rule" "threads" "wildcards"))
2024-01-06 15:05:50 +09:00
((wildcard
(subscript
value: (identifier) @label))
(#any-of? @label "input" "jobid" "log" "output" "params" "resources" "rule" "threads" "wildcards"))
2023-09-13 03:29:22 +02:00
2024-01-06 15:05:50 +09:00
; directive labels in block context (eg. within 'run:')
2023-09-13 03:29:22 +02:00
((identifier) @label
(#any-of? @label "input" "jobid" "log" "output" "params" "resources" "rule" "threads" "wildcards")
2023-09-13 03:29:22 +02:00
(#has-ancestor? @label "directive")
(#has-ancestor? @label "block"))