THIS IS AN EXPERIMENT ATM
This package turns bibtex-completion functions into completing-read-based Emacs commands. When used with selectrum, embark, and marginalia, it provides similar functionality to helm-bibtex and ivy-bibtex: quick filtering and selecting of bibliographic entries from the minibuffer, and the option to run different commands against them.
Here's a screenshot with selectrum and embark.
The easiest way to install ATM is via straight, like so:
(straight-use-package
'(bibtex-actions :host github :repo "bdarcus/bibtex-actions"))
If you happen to be using Doom Emacs, you can just add this to your package.el
file:
(package! bibtex-actions
:recipe (:host github :repo "bdarcus/bibtex-actions"))
Since all of the command logic resides in bibtex-completion, that is where to look for different configuration options.
The only thing, however, that you must configure is where to find your bib file(s).
(setq bibtex-completion-bibliography "~/bib/references.bib")
To access these commands from embark-act
, set this variable.
(setf (alist-get 'bibtex embark-keymap-alist) 'bibtex-actions-map)
You have a few different ways to interact with these commands.
Simply do M-x
and select the command that you want, enter the terms to find the item you are looking for, and hit return.
This runs the default action: the command you invoked.
Here's the view, using marginalia for annotations.
If while browsing you instead would rather edit that record, and you have embark installed and configured, this is where embark-act
comes in.
Simply input the keybinding for embark-act
(in my case C-o
), and select the alternate action.
A final option, that can be very useful: run embark-collect-snapshot
(S
) from embark-act
.
This will select the candidate subset, and open it in a separate buffer.
From there, you can run the same options discussed above using embark-act
(which is also bound to a
in the collect buffer).
So, for example, say you are working on a paper. You hold the complete superset of items you are interested in citing at some point in that buffer. From there, you can run different actions on the candidates at will, rather than search individually for each item you want to cite.