Those few recipes illustrate the logic of using bacon, and may serve as inspiration for your own practices.
Tell me about your recipes so that I may share them there.
# Jump to the next location in neovim
With the [nvim-bacon](https://github.com/Canop/nvim-bacon) plugin, you can navigate between errors and warnings without leaving nvim, just hitting a key.
# Open your lib's doc
Let's first assume your `bacon.toml` file has been generated by a recent version of bacon.
Then you can launch bacon on its default task, then when you want to check the doc, hit the <kbd>d</kbd> key: as soon as the doc compiles, it's opened in your browser and bacon switches back to the previous job.
If you want to complete an old `bacon.toml` file, or just understand how it works, here's the relevant configuration:
The job:
```TOML
[jobs.doc-open]
command = ["cargo", "doc", "--color", "always", "--no-deps", "--open"]
need_stdout = false
on_success = "back" # so that we don't open the browser at each change
```
And the key binding:
```TOML
[keybindings]
d = "job:doc-open"
```
# Configure Clippy lints
The jobs in the `bacon.toml` file are specific to your projects, there's no reason not to adapt them for its specificities.
You may for example want to tune the clippy rules:
```TOML
[jobs.clippy]
command = [
"cargo", "clippy",
"--color", "always",
"--",
"-A", "clippy::collapsible_else_if",
"-A", "clippy::collapsible_if",
"-A", "clippy::field_reassign_with_default",
"-A", "clippy::match_like_matches_macro",
]
need_stdout = false
```
# Check for other platforms
You may define specific jobs for specific targets:
```toml
[jobs.check-win]
command = ["cargo", "check", "--target", "x86_64-pc-windows-gnu", "--color", "always"]
```
An habit I suggest: use <kbd>alt</kbd> keybindings for *alternative* platforms:
```toml
[keybindings]
alt-w = "job:check-win"
```
# Run binaries and examples
If you configure a `cargo run` job, you'll get the usual warnings and errors until there's none, at which point you'll have the output of your binary (assuming its terminal output is interesting).
```toml
[jobs.exs]
command = ["cargo", "run", "--example", "simple", "--color", "always"]
allow_warnings = true
need_stdout = true
```
You may add `on_success = "back"` if you don't want the executable to run again on changes.
The `allow_warnings = true` line tells bacon to run the executable even when there are warnings. The excutable's output would come below warnings.
Some libraries and programs test whether they run in a TTY and remove style in such case.
Most usually, those applications provide a way to bypass this test with a launch argument.
Depending on the desired output, you would have to add a setting to the run job, for example
([more on this](https://github.com/Canop/bacon/issues/89#issuecomment-1257752297)):
```toml
command = ["cargo", "run", "--color", "always", "--", "--color", "yes"]
```
# Variable arguments
Launch arguments after the `--` aren't interpreted by bacon but sent inchanged to the job commands.
This may be useful to add an argument only for one run without changing the `bacon.toml` file.
For example
```bash
bacon -- --target x86_64-pc-windows-gnu
```
Be careful that some programs already require `--` so you may have to double it.
For example, to run `cargo test` with a single thread, you'll need
```bash
bacon test -- -- --test-threads=1
```
Another use case, a job which needs a complementary argument:
```toml
[jobs.ex]
command = ["cargo", "run", "--color", "always", "--example"]
need_stdout = true
```
You would call it with
```bash
bacon ex -- example4578
```