:env lets you specify what environment variables exec-path-from-shell
should pull in from your shell environment at startup. As such, these
need to be defined at startup. :env is useless post-init.
May address #433
Doom saves a lot of startup time by avoiding package-initialize, because
it loads every packages' autoloads file, which is expensive.
Unfortunately, these autoloads files are necessary for some plugins with
abnormal file structures (such as ESS). Previously, I was content with
loading them myself, but these occurrences have become more frequent, so
it would be safest if I relied on package-initialize more.
So doom-initialize will now do so. However, it will cache the load-path
(and Info-directory-list, fixing the lost info buffers) on first run.
This makes byte-compiling Doom almost useless, but it makes startup just
as fast as Doom would be if you had.
This needs more testing.
This is a regression introduced in b1bf67f6.
Package management would incorrectly compare quelpa package versions
with elpa package versions. This would cause "outdated" packages to get
deleted.
Autoload paths used to be relative to arbitrary roots (usually
doom-modules-dir). This commit changes doom//reload-autoloads to iterate
over autoloads in doom-autoloads-file and replace their file paths with
an absolute one.
Theoretically this should make Emacs feel marginally faster, but we
*probably* get more of a benefit from a shorter load-path (because we no
longer need doom-modules-dirs, doom-core-dir or doom-psuedo-module-paths
in the load-path).
This is highly experimental however!
Any module can now use a doom! call to declare a module tree root.
This means that if you have a doom! block in
~/.emacs.d/modules/lang/org/init.el, then you can have submodules in
~/.emacs.d/modules/lang/org/modules/MODULE/SUBMODULE if you wanted to
for some reason.
This is only really truly useful for private modules. A doom! block in
~/.doom.d/init.el will recognize and enable modules in
~/.doom.d/modules/.
~/.doom.d/modules is now a full module tree, like ~/.emacs.d/modules.
Symlinks are no longer involved.
Private modules can now shadow Doom modules. e.g.
~/.doom.d/modules/lang/org will take precendence over
~/.emacs.d/modules/lang/org.
Also, made doom--*-load-path variables public (e.g. doom--site-load-path
=> doom-site-load-path), and rearranged the load-path for a 10-15%
startup boost.
+ Instead of remapping delete-backward-char to doom/delete-backward-char
(which was unreliable, depending on the mode), it is now overridden
with it, without sacrificing its original functionality. The new
behavior is as follows:
+ Fall back to sp-backward-delete-char when it makes sense to delete
the adjacent pair: {|} => |
+ Collapse an indented pair block, if at bolp in between: {
|
} => {|}
+ Refresh a pair's :post-handlers when deleting into pair: {
|
} => {|} => {
|
} (can be repeated)
+ When cursor is preceded by whitespace, delete in increments of
tab-width.
+ newline-and-indent has been advised to:
+ Only newline when in a string.
+ Continue comment lines consistently (needs more testing!)
+ Falls back to basic newline-and-indent, without affecting whitespace
in the origin line (it would originally delete-horizontal-space
before creating a new line).
+ Incorporates a set of reasonable defaults for brace expansion on RET
or SPC, as mentioned in #343 and #413.
Affects #343, #413