doomemacs / doomemacs/core

Add support for Snakemake into Doom Emacs

Open
#6,664 0 comments 0 reactions 0 assignees View on GitHub
:lang python is:feature
Dominant language
Emacs Lisp
Stars
22.7k
Forks
3.1k
Avg merge
10h 46m
Merged PRs (30d)
4

Description

### Describe your request

[Snakemake](https://snakemake.readthedocs.io/en/stable/) is a general-purpose workflow manager written in Python.
It would be great to have a module for Snakefiles in Doom Emacs, and I believe it would be a relatively easy addition to make:

- A major mode and transient for Snakemake [already exist](https://git.kyleam.com/snakemake-mode/about/)
- Linting is offered directly by Snakemake through `snakemake --lint`, so it could be integrated with the linter
- Interacting with the workflow is possible by parsing the commands in the shell
- A lot of potential additional features for testing and formatting are well-described [in the documentation](https://snakemake.readthedocs.io/en/stable/snakefiles/best_practices.html)

I would try to contribute to it at my best, but my Elisp is extremely limited.

### Briefly explain its use-case

The Melpa package currently works well for the syntax highlighting with Doom, but it lacks functionalities like linting at save or interacting with the workflow

![image](https://user-images.githubusercontent.com/46871438/184269376-ada9135d-0f4d-4148-9e64-d60b4a533159.png)

The dependencies for a potential module would be as low as `snakemake-mode` and Snakemake itself, and the latter would be just for linting/interacting with the workflow (making it an optional dependency to flag through `doom doctor`).

A potential use-case would be

- Create a new Snakemake project (by adding a Snakefile and/or using the [standardised structure](https://snakemake.readthedocs.io/en/stable/snakefiles/deployment.html#distribution-and-reproducibility))
- Specify the rules via Doom
- Test the rules using a dry run in Doom (parsing e.g. `snakemake -np`)
- Save file and run linter automatically (`snakemake --lint`)
- Run testing (e.g. [here](https://github.com/snakemake/snakemake-github-action))

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.