diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-12 09:54:30 -0600 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 692b051b09935653befdb8f7ba8afdb640adf17b (patch) | |
| tree | 167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/snakemake | |
| parent | feat(c-family): inherit injections (diff) | |
| download | nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2 nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip | |
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/snakemake')
| -rw-r--r-- | runtime/queries/snakemake/folds.scm | 8 | ||||
| -rw-r--r-- | runtime/queries/snakemake/highlights.scm | 82 | ||||
| -rw-r--r-- | runtime/queries/snakemake/indents.scm | 25 | ||||
| -rw-r--r-- | runtime/queries/snakemake/injections.scm | 5 | ||||
| -rw-r--r-- | runtime/queries/snakemake/locals.scm | 4 |
5 files changed, 124 insertions, 0 deletions
diff --git a/runtime/queries/snakemake/folds.scm b/runtime/queries/snakemake/folds.scm new file mode 100644 index 000000000..d154f3cde --- /dev/null +++ b/runtime/queries/snakemake/folds.scm @@ -0,0 +1,8 @@ +; inherits: python + +[ + (rule_definition) + (rule_inheritance) + (module_definition) + (checkpoint_definition) +] @fold diff --git a/runtime/queries/snakemake/highlights.scm b/runtime/queries/snakemake/highlights.scm new file mode 100644 index 000000000..8781b405c --- /dev/null +++ b/runtime/queries/snakemake/highlights.scm @@ -0,0 +1,82 @@ +; 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" + "rule" + "from" + "exclude" + "as" + "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") + (#has-ancestor? @label "directive") + (#has-ancestor? @label "block")) diff --git a/runtime/queries/snakemake/indents.scm b/runtime/queries/snakemake/indents.scm new file mode 100644 index 000000000..140b7fb3c --- /dev/null +++ b/runtime/queries/snakemake/indents.scm @@ -0,0 +1,25 @@ +; inherits: python + +((rule_definition) @indent.begin + (#set! indent.immediate 1)) + +((checkpoint_definition) @indent.begin + (#set! indent.immediate 1)) + +((rule_inheritance) @indent.begin + (#set! indent.immediate 1)) + +((rule_import + "with" + ":") @indent.begin + (#set! indent.immediate 1)) + +((module_definition) @indent.begin + (#set! indent.immediate 1)) + +((directive) @indent.begin + (#set! indent.immediate 1)) + +; end indentation after last parameter node (no following ',') +(directive_parameters + (_) @indent.end .) diff --git a/runtime/queries/snakemake/injections.scm b/runtime/queries/snakemake/injections.scm new file mode 100644 index 000000000..fa56daabb --- /dev/null +++ b/runtime/queries/snakemake/injections.scm @@ -0,0 +1,5 @@ +; inherits: python + +(wildcard + (constraint) @injection.content + (#set! injection.language "regex")) diff --git a/runtime/queries/snakemake/locals.scm b/runtime/queries/snakemake/locals.scm new file mode 100644 index 000000000..219f23347 --- /dev/null +++ b/runtime/queries/snakemake/locals.scm @@ -0,0 +1,4 @@ +; inherits: python + +(rule_definition + name: (identifier) @local.definition.type) @local.scope |
