Allows you to ignore certain buffers. Helpful for plugins that manage
their own windows, like magit.
To use:
(set! :popup "^\\*magit" :ignore)
Relevant to #337
This is experimental and disabled by default. It uses a slightly more
primitive backend that will stack popups away from the edge of the
frame. This will need more work to take window-slot into account.
To use it:
(remove-hook '+popup-display-buffer-actions 'display-buffer-in-side-window)
(add-hook '+popup-display-buffer-actions #'+popup-display-buffer t)
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.
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))
+ 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
+ Fix list where cons should be
+ Update +popup-window-parameters docstring
+ Use display-buffer instead of +popup-buffer (no need to remember
alist). This ensures restored popups (with +popup/restore) are truly
identical to their former selves.