WARNING: THIS IS A BREAKING CHANGE FOR THEME/FONT/NLINUM CUSTOMIZATIONS.
This change was motivated by the need to decouple theme and font loading
from the ui/doom module.
Now, it is doom-core's purview. Theme and fonts are loaded after
initfiles are read (attached to the doom-init-ui-hook hook), giving
other modules (especially private ones) a chance to change the theme or
fonts.
+ Refactor core-ui.el
+ New init hook: doom-init-ui-hook
+ Decouple theme/font loading from ui/doom
+ Load modelines are doom-init-ui-hook
+ New theme/font variables (replaces old ui/doom variables)
+ doom-theme
+ doom-font
+ doom-variable-pitch-font
+ doom-unicode-font
+ Change nlinum variables
+ doom-line-number-lpad
+ doom-line-number-rpad
+ doom-line-number-pad-char
Addresses #117
A wrong-type-argument: symbolp error occurs when core files are
byte-compiled and the expanded message!/format! macros are trying to
cl-flet-alias 'color to doom-ansi-apply (which hasn't been loaded yet).
+ Moved unit tests out of tests/ and into their respective modules.
+ Rewrite makefile and added these tasks:
+ <MODULE>/<SUBMODULE> -- byte-compile a specific module
+ test:<MODULE>/<SUBMODULE> -- runs tests for a specific module
+ testi -- run tests in an interactive session of Emacs (WIP)
+ run -- opens an Emacs session with this config; useful when it is in
a non-standard location.
This refactor is about improving how Emacs deals with errors.
A large net is now cast at startup to catch possible errors, produce
more helpful error messages, and localize the damage. Significantly
reducing the risk of later modules not loading (and leaving you
stranded in a half-broken Emacs session).
The DOOM core files are an exception. If something messes up in there,
it *should* choke.
+ use-package will now report missing packages or slow-loading/broken
def-package! configurations.
+ Persp-mode no longer (inadvertantly) hides buffers that pop up at
startup, like the *Warnings*, *Backtrace* or debugger buffers.
+ `make autoloads` (or doom/reload-autoloads) now produces a slightly
more informative error message if an error occurs while building the
autoloads file.
+ Error handling for package management is *slightly* better now; error
messages now include the type of error; this needs work.
+ enable lexical-scope everywhere (lexical-binding = t): ~5-10% faster
startup; ~5-20% general boost
+ reduce consing, function calls & garbage collection by preferring
cl-loop & dolist over lambda closures (for mapc[ar], add-hook, and
various cl-lib filter/map/reduce functions) -- where possible
+ prefer functions with dedicated opcodes, like assq (see byte-defop's
in bytecomp.el for more)
+ prefer pcase & cond (faster) over cl-case
+ general refactor for code readability
+ ensure naming & style conventions are adhered to
+ appease byte-compiler by marking unused variables with underscore
+ defer minor mode activation to after-init, emacs-startup or
window-setup hooks; a customization opportunity for users + ensures
custom functionality won't interfere with startup.
With quelpa updating fixed, there is a longer delay on package update.
So I added a 'looking for outdated packages...' message, and improved
the formatting of backtraces in debug output.