Purpose

emacs-bacon is an emacs minor-mode, which, combined with bacon, lets you navigate between errors and warnings without leaving your editor, just hitting a key. It also syncronizes bacon to show the current navigated item.

Development

emacs-bacon is maintained on radicle. It’s radicle id is rad:zKbD2Y9kERBYScgczMaJBTRfjBhh. Issues and PR’s are maintained in radicle as well.

Discussions and feedback are welcome on mastodon. Write to @cehteh@social.tchncs.de with the #scrollpanel tag.

How it works

At every job end, bacon writes a .bacon-locations file with all items (errors, warnings, test failures, etc.) and for each of them its label, file path, line and column.

It read the bacon/prefs.toml and local bacon.toml. You can remote-control bacon from emacs with the C-c b prefix (customizeable) followed by whatever keybindings the bacon preferences define to send a command to bacon.

You can bind bacon-next and other commands to jump to next|prev|first items|error|warning|test. bacon-minor-mode watches the .bacon-locations file for changes and re-reads it every time it changed.

When jumping to a location, emacs-bacon also sends a command to bacon to scroll to the focused item.

Bacon configuration

The configuration instructing bacon to export the locations at every job should be defined in your global bacon/prefs.toml:

[exports.locations]
auto = true
path = ".bacon-locations"
line_format = "{kind}@{job}[{item_idx}] {path}:{line}:{column} {message}"

In order for emacs-bacon to send commands to bacon, you should also ask it to listen, with

listen = true

Installation & Usage

More details on how to install emacs-bacon, how to configure it, and how to use it, are described in its own page: emacs-bacon