Sometimes I break my Doom installation after fiddling with doom {compile,build,sync}. Ok, fine, it’s my fault.
But when this happen in a day in which I cannot afford Doom to break (because I have work to do), I don’t have time to parse inscrutable bytecode errors. I just need Doom to work again. Now.
Most of the issues related to cached bytecode seems to disappear when (surprise!) completely deleting any cache. I think doom clean gets close but I if I understand it only deletes the private config cache.
I’d love if there was a doom clean --all option which would run the equivalent of:
find $EMACSDIR/ -name '*.elc' -delete
At least that would expose more clearly if there’s an error in the user configuration, right?
So what’s now the suggested strategy to remove all package and personal config *.elc files?
Maybe running find $EMACSDIR/.local/straight/build-xx.yy.zz/ -name '*.elc' -delete?
To answer this question from Github: you’re asking for a strategy for two separate things: removing package byte-code and removing personal config bytecode.
Package byte-code
;;; add to $DOOMDIR/packages.el
;; to disable for a single package:
(package! some-package :recipe (:build (:not compile)))
;; to disable for all packages:
(setq straight-disable-compile t)
Then run doom sync (and, of course, restart Emacs).
Personal config byte-code
The suggested strategy for this is to never byte-compile your config files at all. doom compile (and doom clean) were removed because they provided little-to-no benefit for the trouble it caused. It only really existed so power users to experiment with, at their own risk, but many users mistook it as a “free” performance boost (which it isn’t, except in very specific contexts), disregarding the repercussions.
Byte-compiling Doom’s source is not supported, and is more complicated than it sounds, but you can compile your private config with M-x byte-recompile-directory RET $DOOMDIR or emacs --batch -f batch-byte-recompile-directory $DOOMDIR to do it (along with your find command to undo it).
In any case, doom sync (or doom sync -b (which is the same as doom build and will replace it later) to rebuild all packages) is all you should need.