Caused by over-zealous doom-switch-window-hook.
For my own sanity (and if you're curious), I'll break it down here:
1. Doom has a `doom-switch-window-hook` hook. It triggers when window
focus is changed.
2. We use `buffer-list-update-hook` to trigger
`doom-switch-window-hook`. (That may sound weird, but this hook is
reliably executed when window focus is changed -- there are
safeguards to prevent this from triggering too often)
3. `buffer-list-update-hook` triggers whenever a buffer is created, but
`doom-switch-window-hook` only triggers if the created buffer is in
a new window.
4. The use of `with-temp-buffer` in `centaur-tabs-line-format` counts as
"buffer creation" in a "new window".
5. `+vc-gutter-update-h` is in `doom-switch-window-hook`. This refreshes
git-gutter, which initiates a redraw of Emacs.
6. When Emacs redraws, it recalculates its mode and header lines. which
triggers `doom-switch-window-hook` once, which triggers
`+vc-gutter-update-h`, which redraws the screen, then Emacs recalculates
the header line, running `centaur-tabs-line-format`...
Infinite loop ensues
Hopefully fixes:
- hlissner/doom-emacs#2436
- ema2159/centaur-tabs#18
- ema2159/centaur-tabs#88
Also renames doom-scratch-buffer-major-mode ->
doom-scratch-initial-major-mode, since it only affects the initial
buffer now.
This was designed to be backwards compatible; you won't lose your
scratch buffers from this update. Though I may remove the old format in
3.1.
refresh isn't going anywhere, but sync will be the canonical command
here on out, because it is more appropriate for kind of work it will be
doing in the future.
This may be reinstated later, but for now is a common source of issues
because Doom must be fully loaded before byte-compiling; and doing this
is prone to errors when Doom is in an incomplete state (which may be the
case if there were an error earlier in 'doom sync').
This won't be an issue once the doom script becomes transactional.
Reflog keeps the history of every reset, so expiring it allows us to
remove more older commits. git gc by default only cleans for 2 week old
objects, so I made it more aggressive
the command is actually fairly useless on windows anyway -- unless you are specifically running emacs with elevated privileges, you get the following error:
```
This will download and install fonts, are you sure you want to do this? (y or n) y
Contacting host: raw.githubusercontent.com:443
mm-write-region: Opening output file: Permission denied, c:/Windows/Fonts/material-design-icons.ttf
```
- Make doom/info package details more concise
- Removed doom-pinned-packages variable (pin info now stored in
doom-packages metadata)
- Fix unpin! not actually unpinning some packages