It’s already been a month since I moved from
package.el to straight.el, and if
it wasn’t for the constant fiddling with my Emacs configuration, I would have
hardly noticed the differences in package management. A proof of the solid work
straight.el, sure, but also a demonstration of how painless package
management can be for someone who bypasses the provided UI and relies on
use-package snippets to install and setup their packages.
straight.el a new approach to updates is needed. First of all,
I compulsively track the state of the packages I have installed, and I tend to
update all of them every morning. This is an operation that follows the pulling
of the latest developments on the Emacs
On the one hand, this approach could lead to breaking changes and tears of sadness. On the other hand, I like to report bugs as soon as I discover them, and hopefully help the great developers out there who make my text editing a wonder.
Considering how vital to my computing Emacs is, this may sound like complete
madness, I know. In my defence, I mostly rely on stable and long-term support
software on my computer. Emacs is just the special kind of madness that drags me
to it in spite of the risks. Furthermore, as I wrote last time,
makes it easier to revert to a previous unbroken version of a package, so I can
find a functional environment without too much of a hassle.
package.el days, package updating was handled by Paradox. In a matter of a
couple of key bindings, it took care of notifying me about new versions and
installing the selected updates.
straight.el is less fancy, though. It provides
the necessary commands to install and update a package, as well as the big
brother that will pull every package in, but all the UI it offers is the
user’s completing-read framework—
ivy-read in my case.
Well, like the first line of the README says,
straight.el is a tool for the
Emacs hacker, so let’s play with it. All I had to do to get a more interactive
user experience when updating packages was devising a small wrapper around
(defun mu-straight-pull-or-prune (&optional prune) "Update all available packages via `straight'. With PRUNE, prune the build cache and the build directory." (interactive "P") (if prune (when (y-or-n-p "Prune build cache and build directory?") (straight-prune-build-cache) (straight-prune-build-directory)) (when (y-or-n-p "Update all available packages?") (straight-pull-all)))) (bind-key* "<f7>" #'mu-straight-pull-or-prune)
Pretty straightforward, isn’t it? (Pun intended.)