And rearrange "Checking out ..." message during 'doom upgrade' to
display package first, then commit (and abbreviated), rather than the
other around. It's easier to read.
When a package's worktree is dirty (or its recipe was changed), straight
prompts you with options to deal with it. To make it easier for less git
savvy folks, the recommended option has been marked.
- Reduces `package!`'s side-effects and moves them to
`doom-initialize-packages`.
- Adds :pin to `package!` for commit pinning (but it hasn't been
implemented just yet -- needs more testing)!
- Adds `doom-pinned-packages` variable
- Now overrides straight recipes using `straight-override-recipe`
instead of in-house merging.
Errors like 'Could not find package emacsmirror-mirror in recipe
repositories' occur because I assumed that straight--reset-caches would
unset `straight-recipe-repositories`. I'm not sure if that was ever the
case, but it isn't now.
- No longer translates :fetcher to :host. Update your package!
declaration people!
- Now evaluates the values for properties (except for :recipe IF it is a
list whose CAR passes keywordp -- for backwards compatibility).
- Throws error if an invalid property is used for a package!'s :recipe
Fixes an issue where package! declarations were read unconditionally at
compile time, whether or not they were on a reachable code path. e.g.
evil is always disabled by:
(when nil
(package! evil :disable t))
This eliminates the possibility of straight throwing an
emacs-version-changed error, which is difficult to catch, when uses
could invoke a straight command interactively and any time. We'll do our
own version checks (later).
Straight throws an 'emacs-version-changed' error if you load it with a
version of Emacs it wasn't compiled with. This update causes this to
emit a more helpful error.
Instead of replacing the whole recipe with the contents of :recipe, only
modify the specified properties. This allows you to specify helpful
parameters like :nonrecursive or :depth without having to include the
full recipe.
Straight expects to be used interactively, which don't do (yet). Its
transactional system depends on idle timers, which don't run in a
noninteractive session, so we have to nudge it ourselves.