This lets you delay a body of code until an arbitrary condition is
met (which is checked whenever a file is loaded).
Also refactors set-file-template! to wait until +file-templates-alist is
defined.
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!
I am slowly phasing out the setting system (def-setting! and set!),
starting with these.
What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.
The old set! function will still work, for a while.
I prefer not to invent new variables when they aren't strictly
necessary. org-directory is one such variable (although the other path
variables are still necessary).
Alexander-Miller/treemacs#212 introduced treemacs-persist-file, which we
now use instead of tools/treemacs' old treemacs-persistence hack (which
didn't work).
Relevant to #669
set-face-attribute wasn't reliable for changing the fixed-pitch and
variable-pitch faces. custom-set-faces uses a custom, internal user
theme that has the highest precedence, making this the superior choice
for default font-setting.
`display-graphic-p` returns a boolean (possibly a recent change in Emacs
27), which will never match any window system, causing the theme to be
reloaded on every new frame.
Also default doom-last-window-system to initial-window-system.
use-package-handler/:after-call was (accidentally) relying on the
dynamic value of `name`, but now that use-package uses lexical binding,
this isn't possible anymore, causes errors.
If you open emacs with a file (emacs file.txt), the file is switched to
before the switch-buffer hooks are set up. However, many core packages
are hooked to those switch-buffer hooks (to load when they're first
triggered). They miss the boat and don't get loaded.
These packages are now hooked onto after-find-file as well (and
immediately), which will fire when a file is opened, before or after
initialization.
Fixes#680
New function returns a list of (NAME . DESC) cons cells in the order
they were declared (in module packages.el files).
Fixes a load-order issue where autoloads from one package would depend
on the autoloads of another package, but was inserted into
doom-package-autoload-file *before* the depended package, causing
void-variable errors.
Also allows for a big refactor of the :plugins byte-compile target.
I have hunted this bug on and off for nearly a year now. It would kill
processes randomly, move the point suddenly, and quit the active
minibuffer without warning.
The only clue it'd leave behind is an announcement in the minibuffer:
"Already at top-level".
Thanks to @UndeadKernel for the last piece of the puzzle!
Fixes#436
Compile order will affect some packages, so `bin/doom compile :plugins`
will now byte-compile plugins in the order they're declared in, but
after their dependencies.