Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/snakemake/highlights.scm')
-rwxr-xr-xruntime/queries/snakemake/highlights.scm76
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"))