From now on Doom will enforce two conventions for its org files for
consistency's sake:
- Lower-case meta-lines in org files, like #+begin_src, #+name, or
#+end_quote (only exception are the top-level ones, like #+TITLE and
#+STARTUP).
- Use 'emacs-lisp' as the lang specifier for elisp blocks rather than
'elisp'. Emacs doesn't natively recognize the latter.
This will be reflected in our rewritten docs/*.org and module
README.org's.
Because this data contains cached session data, it makes more sense to
have it under `~/.emacs.d/.local/cache` so that it is clear that it can
and should be removed when debugging and testing LSP using modules.
Fix#5649
Before this fix:
(fn! (x &key y z))
;; implies
(fn! (&key x &allow-other-keys)).
But
(fn! (x (&key y) &key z))
;; would not imply
(fn! (x (&key y &allow-other-keys) &key z &allow-other-keys)).
Change (and simplify) the load order of Doom's dashboard and persp-mode
so that the dashboard always initializes later. This and 0ab6aba should
fix#5643.
Fix#5643
Ref 0ab6aba056
Unnecessary redraws can add 0.2-0.4s to startup times in some cases,
especially where site-files are involved (which spam *Messages* with
"Loading X..." messages; which force redraws).
May also indirectly fix#5643 by deferring redisplay (and therefore
window-buffer-change-functions, which triggers doom-init-ui-hook, which
triggers both Doom's dashboard and persp-mode).
Also removes a redundant set-language-environment call.
Ref #5643
68d8364ae added a deprecation notice to any use of a
MODE-local-vars-hook, instructing users to use after-MODE-hook instead,
however this hasn't been decided yet and shouldn't have made it into
68d8364ae.
Ref 68d8364aeaFix#5612
By displaying them pre-init:
a) eshell will not have loaded, ensuring any user-popup rules in
an (after! eshell ...) block don't load in time for the first eshell
popup,
b) Popup predicate functions don't have access to the full state of the
buffer, if needed.
Fixes a regression introduced in 0bb4d4dfc, which changed how
doom-switch-buffer-hook works, but makes it fire too early during
startup, eagerly loading packages that wait for the first interactively
opened buffer. This moves doom-init-ui-h to
window-buffer-change-functions, which fires once at the end of startup,
when any buffer is displayed for the first time in the session.
Ref 0bb4d4dfcb
Emacs 27 introduced a bunch of `window-*-change-functions` hooks,
including `window-selection-change-functions` and
`window-buffer-change-functions`, which handles 98% of the use case for
Doom's `doom-switch-{buffer,window,frame}-hook` hooks, so I've rewritten
them to use them under the hood, which amounts to simpler code and fewer
hacks.
Use the new server-after-make-frame-hook, introduced in Emacs 27.1, to
clean up how we initialize fonts, themes, and the UI in general.
This may indirectly fix font issues in daemon sessions.
Doom doesn't use these two functions, but since they can be useful for
debugging *and* straight provides impleemntations for them already,
they're trivial to fix.
The delay will not be adjusted on a per-GC basis, depending on its last
run-time. This should average to around 2-3s, which should be a good
compromise between GCing too often and too infrequently.