aboutsummaryrefslogtreecommitdiffstats
path: root/queries/snakemake
diff options
context:
space:
mode:
authorosthomas <8322329+osthomas@users.noreply.github.com>2023-09-13 03:29:22 +0200
committerGitHub <noreply@github.com>2023-09-12 21:29:22 -0400
commit2461e5ac21c59950457fea4b3f9f184f0daa8913 (patch)
tree7c31fedfe46bd9149381d9b166f6048b53b45f50 /queries/snakemake
parentfeat: @spell on comments (diff)
downloadnvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar.gz
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar.bz2
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar.lz
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar.xz
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.tar.zst
nvim-treesitter-2461e5ac21c59950457fea4b3f9f184f0daa8913.zip
feat: add Snakemake
Diffstat (limited to 'queries/snakemake')
-rw-r--r--queries/snakemake/folds.scm6
-rw-r--r--queries/snakemake/highlights.scm64
-rw-r--r--queries/snakemake/injections.scm4
-rw-r--r--queries/snakemake/locals.scm1
4 files changed, 75 insertions, 0 deletions
diff --git a/queries/snakemake/folds.scm b/queries/snakemake/folds.scm
new file mode 100644
index 000000000..36ed2318b
--- /dev/null
+++ b/queries/snakemake/folds.scm
@@ -0,0 +1,6 @@
+; inherits: python
+[
+ (rule_definition)
+ (module_definition)
+ (checkpoint_definition)
+] @fold
diff --git a/queries/snakemake/highlights.scm b/queries/snakemake/highlights.scm
new file mode 100644
index 000000000..8b173e0b5
--- /dev/null
+++ b/queries/snakemake/highlights.scm
@@ -0,0 +1,64 @@
+; 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" @include
+ "rule" @include
+ "from" @include
+ "as"? @include
+ "with"? @include
+)
+
+
+;; Rule inheritance
+(rule_inheritance
+ "use" @keyword
+ "rule" @keyword
+ "with" @keyword
+)
+
+
+;; Wildcard names
+(wildcard (identifier) @variable)
+
+
+;; 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")
+ (#has-ancestor? @label "directive")
+ (#has-ancestor? @label "block"))
diff --git a/queries/snakemake/injections.scm b/queries/snakemake/injections.scm
new file mode 100644
index 000000000..dd41cbadb
--- /dev/null
+++ b/queries/snakemake/injections.scm
@@ -0,0 +1,4 @@
+; inherits: python
+
+(wildcard (constraint) @injection.content
+ (#set! injection.language "regex"))
diff --git a/queries/snakemake/locals.scm b/queries/snakemake/locals.scm
new file mode 100644
index 000000000..0b920cbf9
--- /dev/null
+++ b/queries/snakemake/locals.scm
@@ -0,0 +1 @@
+; inherits: python