Highlights:
- 'doom purge' now purges builds, elpa packages, and repos by default.
Regrafting repos is now opt-in with the -g/--regraft switches.
Negation flags have been added for elpa/repos: -e/--no-elpa and
-r/--no-repos.
- Removed 'doom rebuild' (it is now just 'doom build' or 'doom b').
- Removed 'doom build's -f flag, this is now the default. Added the -r
flag instead, which only builds packages that need rebuilding.
- 'doom update' now updates packages synchronously, but produces more
informative output about the updating process.
- Straight can now prompt in batch mode, which resolves a lot of issues
with 'doom update' (and 'doom upgrade') freezing indefinitely or
throwing repo branch errors.
- 'bin/doom's switches are now positional. Switches aimed at `bin/doom`
must precede any subcommands. e.g.
Do: 'doom -yd upgrade'
Don't do: 'doom upgrade -yd'
- Moved 'doom doctor' from bin/doom-doctor to core/cli/doctor, and
integrated core/doctor.el into it, as to avoid naming conflicts
between it and Emacs doctor.
- The defcli! macro now has a special syntax for declaring flags, their
arguments and descriptions.
Addresses #1981, #1925, #1816, #1721, #1322
When the x-window system commands emacs to quit, emacs saves a session in
`.emacs.d/session.*` by default. There is no easy way to change the save
path. This commit overwrites the function responsible for creating the session
file name. We set the session file to reside in `doom-cache-dir`.
doom-load-envvar-file would fail if there weren't two newlines
indicating "the start of the envvar list", or if envvars were commented
out/were padded with whitespace. These rules have been relaxed.
Fixes an issue where autoloads would bloat load-path and auto-mode-alist
with duplicates because they were build on top of old autoloads state.
We initialize packages manually at the start of non-interactive sessions
anyway.
- No need to use after! (it has a little magic associated with it that are
meaningless this early in the startup process), so we use
with-eval-after-load instead.
(And I've been itching for an excuse to use doom-rpartial)
- Eager-load all core autoloaded libraries if autoloads file isn't
present.
- Renames functions to be more descriptive of their true purpose:
- doom-initialize-autoloads -> doom-load-autoloads-file
- doom-load-env-vars -> doom-load-envvars-file
- Use doom-module-p instead of featurep! for backend use (the latter is
mainly syntax sugar for module use, and evaluates at compile/expansion
time, which may cause hash-table-p errors early in the startup
process).
- Reorder plist library to prevent load order race condition with the
functions using the macros that haven't been defined yet.
There are a few kinks to iron out, but for the most part it's done. Doom
Emacs, powered by straight. Goodbye gnutls and elpa/quelpa issues.
This update doesn't come with rollback or lockfile support yet, but I
will eventually include one with Doom, and packages will be (by default,
anyway) updated in sync with Doom.
Relevant threads: #1577#1566#1473
- Adds the auto-minor-mode package to replace our in-house
implementation.
- Merges associate! into the def-project-mode! macro because associate!
on its own is less useful than auto-minor-mode-alist,
auto-minor-mode-magic-alist or hooks.
- Changes the semantics of :modes and :add-hooks properties of
def-project-mode!. Its arguments are evaluated as is; lists will need
to be quoted.
squash! core-lib: remove associate! macro