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
I think it's pretty common for people (myself included) to name their capture file `capture.org` file, and currently this rule matches it, so if you open capture.org, your end up with it opened in a popup (I believe it wasn't intended?). My fix makes it so it matches only capture buffers (they've got name like `CAPTURE-filename.org`). I believe there shouldn't be any unanticipated consequences of the change?
As far as I understand, the problem is that in elisp, regexes are case insensitive by default, and the sensitivity is controlled by a [variable](http://ergoemacs.org/emacs/emacs_regex.html), so I struggle to see what's the proper way to control it (especially considering the window manipulation happens in `window.el`). If you know of a way to deal with this, happy to implement and update my pull request!
A common bug report is that straight cannot see treemacs-persp in MELPA.
Perhaps the MELPA repo isn't being updated properly -- I have no idea,
but since this package isn't doing anything at the moment, I will simply
remove the package until I have time to look into it further.
When a file template rule is evaluated against a particular buffer it is
supposed to call the :when function if it is defined. Currently, the
function is ignored if the PRED of the template rule is a mode. This
fixes this issue.
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.