- Remove remaining `EMACS27+` checks, since the whole codebase is
assumed to run at version 27 or above now
- Remove `EMACS27+` definition since it's no longer needed
Emacs 27.x has been the stable version of Emacs for nearly a year, and
introduces a litany of bugfixes, performance, and quality-of-life
improvements that significantly reduce Doom's maintenance burden (like
XDG support, early-init.el, image manipulation without imagemagick, a
native JSON library, harfbuzz support, pdumper, and others).
With so many big changes on Doom's horizon, I like having one less (big)
thing to worry about.
Also reverts bb677cf7a (#5232) as it is no longer needed.
Reverts 86fd6c621 which increased gcmh-high-cons-threshold from Doom's
16mb default to its upstream default (of 1gb). This was an experiment.
In theory, the user should idle enough that it would GC enough to stave
off freezes/stuttering/paging, but in practice, either users did not
idle enough or the GC didn't clean up enough when given the opportunity.
The result: terrible stuttering and freezing after long periods of use.
Back to 16mb gang.
Its output is helpful. Let's not silence it.
But prevent output during incremental loading from hijacking the
minibuffer (likely the original reason org-roam-verbose was disabled).
We only need this magic in CLI sessions. It's better to only use half
the CPUs in interactive sessions (if the user has enabled
comp-deferred-compilation for some reason).
Fixes#5042
(defvaralias A B) throws an error if A is already defined. This breaks
Doom in the event that Doom's config is loaded late (e.g. with 'doom
run'), or these variables are set elsewhere (e.g. the sandbox). I didn't
want to have to do all these checks at startup, but it seems
unavoidable.
Since Doom will only support near-enough the latest commit of Emacs 28
HEAD, I will remove these fixes at the end of May, give or take a week.
After studying set-language-environment, it seems to embody all these
lines. And without without it, non-English glyph rendering is very
slow (see https://emacs-china.org/t/org-mode/16918).
This may have other implications, however, so further testing is needed.
Already set in early-init.el, and deferred compilation is auto-disabled
in noninteractive sessions, so only matters to clients that load
early-init.el.
+ Adds doom-emoji-fallback-font-families
+ Adds doom-symbol-fallback-font-families
+ Gives doom-unicode-font higher precedence (and sets it to nil by
default, since Emacs defaults to symbola already).
+ Store custom face settings in psuedo theme, rather than crowding the
user theme (which may be immortalized to custom-file, which we want to
avoid).
+ Now, after-setting-font-hook is guaranteed to fire after *all* fonts
are set, giving you a more reliable interface to add your own
font(set) modifications.
More testing is needed to ensure the patched fonts our ligatures modules
don't conflict with this change.
Produces more helpful (and harder-to-miss) error messages when a hook
emits an error. Also advises run-hook when doom-debug-mode is active, so
errors in hooks (generally, major mode hooks) don't quietly go
unnoticed.
More in line with Emacs' built-in practice of storing a variable's
standard-value in a symbol property of the same name, with the added
benefit of less global state.
We were making the value of doom-first-input-hook permanent-local
instead of doom-first-input-hook itself. That value is normally nil at
this point, which seems to be harmless. Reloading core.el from a script
(while doom-first-input-hook is not empty) results in an error.
Fix it by adding the missing quote present in the other calls.
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.