A mode to interface with bug/issue tracking systems from within Emacs. This mode started out as bz-mode, but got renamed to bug-mode after work was done to support additional bug trackers.
Currently somewhat working bug trackers are:
The backends generally support at minimum reading bugs, editing bugs and creating bugs. Backends may support extra functionality, dynamically exposed via the UI if they do:
- adding comments, mapped to what comes closest to comment functionality for the backend (as an example, for Rally that’s mapped to discussions)
- search using backend native search language
- search using JQL via a translation layer
- project support, or an emulation of it. For Bugzilla products are mapped to projects, while for GitHub/GitLab organisations are mapped to projects
- repository support. If the tracker is a git forge, and that is discoverable via
project.eloperations on the issues for the current repository are offered
This is a quick start guide. Have a look at the full manual for more details. If you’re a developer, read this.
When using this from git you’ll first need to create autoloads with make autoloads. Release tarballs already have generated autoloads.
Next you’ll need to load bug.el: M-x load-file, and then navigate to bug.el for testing - or to load it on startup, add this to your init file:
(load-file "/path/to/bug-mode/bug.el")bug.el loads the autoloads file, and correctly sets up the load path.
The main entry point is bug-menu, so M-x bug-menu will pop up a transient with options. Without configuration only the instance listing is interesting - from there you’ll be able to interactively add bug tracker instances. It’s recommended to bind bug-menu to a keybinding, like C-c b:
(global-set-key "\C-cb" 'bug-menu)If you prefer the customisation interface over the interactive approach you can do M-x customize-group RET bug and adjust at least the the list of instances. The instance plist configuration could look like this:
(:bz-instance (:url "https://foo.example" :type bz-rpc :api-key-file "~/path/to/file.gpg")
:rally (:api-key-file "~/path/to/rally-file.gpg" :type rally))API keys, stored in GPG encrypted files, are the recommended authentication method for all backends. For other ways of specifying API keys, or other authentication methods supported by some backends check the full manual.
If you don’t like the default faces you can customise them with M-x customize-group RET bug-faces.