Added +ivy-recentf-transformer to counsel-recentf. Entries that aren't
in the same project as the buffer recentf was opened from will be
slightly dimmed.
This makes quickrun, *doom eval* and *Pp Eval Output* buffers behave
better.
Eval output buffers should a) shrink themselves to the size of their
output (within reason), b) *not* grab focus, and c) be easy to close
from afar with C-g/Escape.
Gotchas:
1. Quickrun gets output asynchronously, so we shrink it on
quickrun-after-run-hook, not in the popup rule.
2. *doom eval* and *Pp Eval Output* opens with its output ready, so the
popup system may shrink those to fit.
3. *doom eval* and *Pp Eval Output* handle window selection themselves.
Let them by setting the select window parameter to #'ignore.
Much of my work getting dashboard to behave across GUI, tty and daemon
Emacs is already done with initial-buffer-choice, so I cut down on my
own code and exploit that instead. Needs more testing.
The former +ivy/switch-workspace-buffer constructed its own collection
of buffers, so ivy-use-virtual-buffers would have no effect on it. Use
internal-complete-buffer instead and ivy-read will know what to do under
the hood.
+ivy-buffer-transformer does *most* of what ivy-rich does, so lets cut down on
our own code, bring in ivy-rich, and add our customizations on top of it.
This fixes ivy-use-virtual-buffers support, too.
A buffer can find other, unexpected ways to kill itself, so we set up
a kill-buffer-hook to make sure we're there to catch them. Not all
heroes wear capes.
The window parameters of popup windows weren't being set in Emacs 25.x. Turns
out `display-buffer-alist`'s ALIST argument didn't support the
windows-parameters alist entry until Emacs 26.
Now, the transient, quit, select and modeline parameters now accept
a function FN. See `+popup-window-parameters` for details.
(transient . (FN popup-buffer))
(quit . (FN popup-window))
(select . (FN popup-window))
(modeline . (FN popup-buffer))
Previously, Doom would forget lang/org's modification of the load-path
if you call doom//reload-load-path (which is called when you do package
management with an open Emacs session).
No more!
+ map-delete is shorter and faster than assq-delete-all
+ map-put is simpler than the delete-then-set workflow
+ map-merge is great for merging default and user settings