This was an elusive bug caused by two upstream behaviors: 1. `kill-buffer` will silently refuse to kill a buffer if there is a thread associated with it. 2. `global-diff-hl-mode` activates `diff-hl-mode` in *most* buffers, even invisible ones. This calls `diff-hl-update` each time it does. This isn't a problem *unless* you have `diff-hl-update-async` enabled, because it creates a thread every time `diff-hl-update` is called. That means for every buffer -- real or transient -- you have a new thread queued. And this caused two main issues: 1. Temporary buffers are often opened and closed very rapidly (often faster than the thread can complete), so they weren't getting cleaned up. I hope you weren't too attached to your memory, because you'll have a lot of buried buffers to feed before long! 2. In cases where `diff-hl-update` simply takes a long time, multiple calls to it would queue more threads. When Emacs eventually yields the CPU to them, you'll get random, impossible-to-predict-or-track-down freezes. Joy! This may very well be enough reason to disable `diff-hl-update-async` by default, but I didn't want to give up on it *just* yet, despite how inelegant this solution is... Fix: #7954 Fix: #7991 |
||
---|---|---|
.. | ||
deft | ||
doom | ||
doom-dashboard | ||
doom-quit | ||
emoji | ||
hl-todo | ||
indent-guides | ||
ligatures | ||
minimap | ||
modeline | ||
nav-flash | ||
neotree | ||
ophints | ||
popup | ||
tabs | ||
treemacs | ||
unicode | ||
vc-gutter | ||
vi-tilde-fringe | ||
window-select | ||
workspaces | ||
zen | ||
README.org |
:ui
Description
For modules concerned with changing Emacs' appearance or providing interfaces for its features, like sidebars, tabs, or fonts.
Frequently asked questions
This category has no FAQs yet. Ask one?