This could potentially cause stuttering for long lived sessions where
the user takes few breaks, but could yield great performance benefits in
the shorter term. We'll have to experiment.
I was conservative before. I didn't want to change this globally in case
it had a negative performance impact on shy servers that don't talk
much, but this turned out to be too paranoid. Untalkative servers are
barely, if at all, affected, and chatty ones perform better across the
board.
This fixes a class of issues where doom-first-file-hook would fire even
for files not opened interactively (e.g. via org-agenda reading agenda
files or helpful scraping definitions from source files).
In instances like these, hooks like find-file-hook or pre-command-hook
are set to nil to speed up this process and reduce noise, but many
packages add to these hooks when they are loaded; these are lost when
their lexical values fall out of scope, leading to odd errors (like the
one in #4759).
Fixes#4759 (again)
First brought up in hlissner/doom-emacs@9f08db8
Part 2 of 811099282.
The latest build of native-comp appears to eagerly load comp very early,
so defadvice! won't be defined when this block runs, causing this error.
This is commonly used in Emacs packages to resolve to a location in
`~/.emacs.d`, as storage or a cache. Rather than addressing each
file/directory variable as they are encountered, better to address this
at the source.
Also: this makes some file/directory settings redundant, so they were
removed.
Closes#4347
Renamed `comp-deferred-compilation-black-list` to
`comp-deferred-compilation-deny-list`.
Removed the `late` load flag which is no longer required.
Added a check against the deny list when compiling all Elisp on the
load-path, so we don't inadvertently compile something we shouldn't.
Added compatibility shims to ease transition from older builds of
native-comp.
Add an extra pass to `doom build` to queue native compilation of all
packages on `load-path`. This ensures that all core and site Elisp
packages are actually native-compiled, even on "fast boot" builds.
Add `.local/autolads.el` to the blacklist as native-compiling this file
succeeds, but prevents emacs from starting up.
Revise the evil-collection-vterm blacklist entry to use a more efficient
regex.
Fix a bug where an updated .error file wasn't always written, causing
spurious rebuilds.
Still a long way to go, but this introduces a few niceties for
debugging CLI failures:
+ The (extended) output of the last bin/doom command is now logged to
~/.emacs.d/.local/doom.log
+ If an error occurs, short backtraces are displayed whether or not you
have debug mode on. The full backtrace is written to
~/.emacs.d/.local/doom.error.log.
+ bin/doom now aborts with a warning if:
- The script itself or its parent directory is a symlink. It's fine if
~/.emacs.d is symlinked though.
- Running bin/doom as root when your DOOMDIR isn't in /root/.
- If you're sporting Emacs 26.1 (now handled in the elisp side rather
than the /bin/sh shebang preamble).
+ If a 'doom sync' was aborted prematurely, you'll be warned that Doom
was left in an inconsistent state and that you must run `doom sync`
again.
May address #3746