Restructures Doom's primary core files and entry points to prepare for
backports (from the new CLI) coming soon.
- Removes $EMACSDIR/init.el.
- Doom configures Emacs to ignore ~/.emacs and ~/_emacs files.
- Doom's bootstrapper for interactive sessions was moved out of core.el
and doom-initialize into doom-start.el. This change is preparation for
Doom's new profile system (coming soon™️), where this bootstrapper
will be dynamically generated.
- core.el and early-init.el have been reorganized, comment headers moved
around, and comments updated to reflect these changes.
I change `user-emacs-directory' because most (if not all) packages --
even built-in ones -- abuse it exclusively to build paths for
storage/cache files (instead of correctly using
`locate-user-emacs-file'). This ensures your $EMACSDIR isn't littered
with data files *and* saves us the trouble of setting every
directory/file variable under the sun.
Granted, this introduces an edge case for any legitimate uses of the
variable (e.g. where the caller seeks to locate the user's initfiles),
but I've found no such uses in any of the packages I've audited for Doom
or elsewhere.
NSM has better UX when an invalid/expired certificate is encountered: it
prompts the user to decide what to do with it. If gnutls-verify-error is
non-nil, gnutls either kills or hangs the connection. This is (mostly)
acceptable in noninteractive sessions, where I can more tightly control
outgoing connections, but not in interactive sessions where I stand a
higher chance of stepping on the user's toes instead.
Ref: emacs-circe/circe#405
BREAKING CHANGE: With 26.x support dropped, I've dropped:
- doom-plist-delete: use map-delete instead
- plist-delete!: use cl-callf + map-delete instead
- doplist: use (cl-loop for X on PLIST by #'cddr ...) instead
These were removed as part of an ongoing effort to eliminate
redundancies with built-in packages and reduce Doom's overall footprint.
'doom run' was launching out of Emacs' default
directories (~/.config/emacs and ~/.emacs.d) instead of the parent
directory of bin/doom. This commit corrects that, but is a temporary
measure until the CLI rewrite. I'm also not totally sure this will work
on Windows...
Fix: #6389
On Windows, restart-emacs doesn't escape its arguments properly (#6219).
56686f677a attempted to fix this, but ended up breaking it for
everyone else as well, causing the type error:
Wrong type argument: listp, "--eval \"(add-hook 'window-setup-hook #'doom-load-session 100)\""
This commit fixes both the regression and the original issue.
Amend: 56686f677aFix: #6219
This regression was introduced in 10d00b7cc4, causing
"wrong-type-argument: stringp (X . Y)" errors. It is triggered when
doom-files-in is used with a non-nil :map on a nested directory
tree (like our module tree).
Fix: #6370
Amend: 10d00b7cc4
By default, 'doom ci deploy-hooks' would deploy Doom's git hooks in
$EMACSDIR (~/.emacs.d/.git/hooks). Now it deploys in the local repo its
run in. This is part of an effort to generalize Doom's CI for use
outside this repo.
Ref: 4bae9ffa47
Continues from 47d1b82 as part of an effort to generalize Doom's CI for
use outside this repo:
- 'doom ci ...' commands now:
- Run in the context of the local repo where they're run, rather than
from Doom's install directory ($EMACSDIR).
- Load the first of $REPO_ROOT/.github/ci.el, $DOOMDIR/cli.el, or
$DOOMDIR/cli.el, before executing CI commands. This allows for
per-project configuration, for example:
- https://github.com/doomemacs/doomemacs/blob/master/.github/ci.el
- https://github.com/doomemacs/themes/blob/master/.github/ci.el
(Details may change post-3.0)
- Scopeless commit types are now enforced in `doom-cli-commit-scopes`,
rather than `doom-cli-commit-rules`. This lets you specify exceptions,
like 0597466261.
- `doom-cli-commit-scopes` now supports sub-lists, as an easy way to
permit type-local scopes. E.g. To allow 'install' and 'faq' scopes
only for 'docs:' commits.
(add-to-list 'doom-cli-commit-scopes '(docs "install" "faq"))
These sublists accepts predicates too.
- Fixed the link to git conventions in the linter's failure/warning
output, to point to our Discourse post.
Ref: https://github.com/doomemacs/doomemacs/blob/master/.github/ci.el
Ref: https://github.com/doomemacs/themes/blob/master/.github/ci.el
Ref: 0597466261
Amend: 47d1b82382
When launching Doom via 'doom run', the child process inherits
bin/doom's environment. This change restricts this sub-environment to
the intended target: straight and its use of git.
Fix: #6320
Information is lost when converting font-spec's to xlfd strings (mainly,
DPI), in order to make them compatible with the face frame parameter. To
avoid this, we set the faces' :font attribute instead, which natively
accept font specs, xlfd strings, font objects, and xft strings; no
conversion necessary.
Fix: #6131
Eventually, our modules will move to their own repos (doomemacs/modules
and doomemacs/contrib-modules). Once done, it will formally adopt the
CalVer versioning scheme (Doom's core will stick to SemVer -- these
decisions will be better explained later). These mini-releases won't
mean much until this happens, hence the -dev suffix.
- Fixes a wrong-number-of-args error, due to outdated interactive
spec (#6227).
- Fixes a regression (caused by the refactor in dcae7187b4) where the
doom-info buffer is initially too short (~3 lines tall) to display all
of its contents.
Fix: #6227
Amend: dcae7187b4
I was discussing issues generating autoloads files from some packages
with someone on Discord, and they mentioned issues with
alphapapa/bufler.el, so I added doom-autoloads-excluded-files in
5d0f781062, and also added bufler to it by default. In hindsight, that
doesn't make much sense as a default when Doom and its modules don't
even install bufler (and even if they did, this shouldn't be done in
core).
Ref: 5d0f781062
dtrt-indent-hook-mapping-list entries now accept lists of variables.
This updates doom/set-indent-width to accommodate that.
Ref: jscheid/dtrt-indent@1986ad4e60
So they don't interfere with straight in odd, unpredictable ways. If
you *really* know what you're doing, set DOOMGITCONFIG to the path of a
gitconfig file. This envvar may be renamed in the future, however.
Close: #5640
Co-authored-by: M. Yas. Davoodeh <Davoodeh@users.noreply.github.com>
- Simplify doom-info and doom/info.
- Remove doom/copy-buffer-contents (may be moved later, but atm not very
useful).
- Remove doom/am-i-secure (this will later be replaced with CLI
commands)
These two variables have been the wrong way around for a while. In
preparation for splitting Doom into separate repos (its core and module
libraries), I've corrected them. doom-modules-version is a placeholder
and will be removed later.
I've also settled on -dev suffix for inter-release versions of Doom,
rather than alpha.
Emacs 29+ introduced the setopt macro for setting defcustom variables in
a way that takes setters and type-constraints into account, but it
eagerly pulls in a symbol's dependencies before doing so. To side-step
this silliness, use Doom's setq! macro instead. I'm tempted to alias
setopt to it...