Nextflow and nf-core workflow completions, commands, syntax highlighting and snippets for Sublime Text 4
⚠️ WARNING⚠️ : Sublime Text 3 is no longer supported by this package as of version 1.0.0. Only Sublime Text 4 is supported since this package requires Python 3.8 and new features in ST4.- ❗NOTE❗: Only DSL-2 Nextflow workflows are supported by this package.
This package provides Nextflow workflow language:
- completions (
params.,conda,<PROCESS/WORKFLOW>.out.<emit name>) - informative popups for processes and sub-workflows
- commands (insert container directive, insert module import statement)
- syntax highlighting
- snippets
Essentially, this package tries to make Nextflow workflow development a bit easier especially when trying to develop nf-core conventions and best practices for developing Nextflow pipelines.
ctrl+l,pin an.nffile where you want to import your process
- select the process you wish to import
- something like the following will be inserted
include { MAKE_BED_MASK } from '../modules/local/make_bed_mask' addParams( options: modules['make_bed_mask'] )The addParams( options: modules['make_bed_mask'] ) may not be needed and can be removed; it assumes that you have a conf/modules.config with a map of your module args, publish_dir, etc (see nf-core/modules for more info).
NOTE: Completions and info popups for params depend on a valid nextflow_schema.json in your workflow root directory. Example nextflow_schema.json for nf-core/viralrecon workflow.
Navigate cursor to a params.<variable> to show a popup with info pulled from the nextflow_schema.json for that workflow parameter.
Conda completion
NOTE: Conda must be installed along with any channels (e.g. bioconda, conda-forge) to get packages information (needs to be able to run conda search).
- Open the command palette (
ctrl+shift+p) and run theNextflow: Fetch Conda packages informationcommand to fetch the latest Conda package info (runsconda search; may take a while). - In your process definition, inside the
condadirective string pressctrl+spaceto bring up the completion list. This may have a little delay since the package list may be very large.
process PANGOLIN {
conda '<press ctrl+space to bring up completion list>'
}Get process named output (i.e. using the emit option) completions after typing <PROCESS_NAME>.out..
- completion shows what's on the channel as well!
Show useful info about what output the a process is emitting.
This command inserts similar code to what you'd find in an nf-core modules process definition with respect to process container directives. The Biocontainers information is pulled from the Singularity images https://depot.galaxyproject.org/singularity/ and cached as a Python pickle file. Docker container image tags point to the Biocontainers Quay.io page.
- Open the command palette (
ctrl+shift+p) and run theNextflow: Fetch Biocontainers informationcommand to fetch the latest Biocontainers list fetched from - In your process definition, press
ctrl+l,c, search for the container you're interested in
- Select the program and version you're interested in to output the following:
if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) {
container 'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--hdfd78af_1'
} else {
container 'quay.io/biocontainers/fastqc:0.11.9--hdfd78af_1'
}Nextflow syntax highlighting extends Sublime Text 4's Groovy syntax with highlighting of:
- imports (DSL-2 modules)

- workflow definitions

- process definitions

- channel highlighting based on matching
ch_* - some invalid syntax checks (into channel in input tag and from channel in output tag)
- highlighting special Nextflow functions and variables (
workflow,params,task, etc)
Process syntax highlighting and scoping allows one to easily go to the definition or usages of a process (ctrl+shift+g keyboard shortcut):
Type one of the following and press TAB:
!env:#!/usr/bin/env nextflowproc: process snippettag: tag process directive snippetpub: publishDir process directive snippetconda: conda process directive snippetillumina: Illumina paired-end reads file pairs channelcpus: insert"${task.cpus}"into a process scriptscript_path: specify user script (e.g. Python script) to use fromscripts/directory in workflow base directoryinfo:log.infosnippetdone: on workflow complete or error message
Added:
- more informative popups for showing info about process output so it's easier to select the correct output channel without referencing the process code.
- subworkflow completions and info popups about
takeandemitchannels condadirective snippet
Fixed:
- comment toggling
- Added syntax highlighting for Nextflow DSL-2
- Added completions and commands for workflow
params,PROCESS.out., conda, container, module include - Removed some not very useful snippets
- Initial release with Groovy-based syntax highlighting and basic snippets
MIT License
Copyright (c) Peter Kruczkiewicz







