This module provides a customizable popup window management system.
Not all windows are created equally. Some are less important. Some I want gone once they have served their purpose, like code output or a help buffer. Others I want to stick around, like a scratch buffer or org-capture popup.
More than that, popups ought to be the second class citizens of my editor;
spawned off to the side, discarded with the push of a button (e.g. ESC or
C-g), and easily restored if I want to see them again. Of course, this system
should clean up after itself and kill off buffers I mark as transient.
+all Enables fallback rules to ensure all temporary/special buffers (whose
name begins with a space or asterix) are treated as popups.+defaults Enables reasonable default popup rules for a variety of buffers.This module has no external prerequisites.
set-popup-rule! and set-popup-rules!
This module has two functions for defining your own rules for popups:
(set-popup-rule! PREDICATE &key IGNORE ACTIONS SIDE SIZE WIDTH HEIGHT SLOT VSLOT TTL QUIT SELECT MODELINE AUTOSAVE PARAMETERS)
(set-popup-rules! &rest RULESETS)
PREDICATE is a predicate function or regexp string to match against the
buffer’s name. You’ll find comprehensive documentation on the other keywords in
set-popup-rule!’s docstring (SPC h f set-popup-rule!).
Popup rules end up in
display-buffer-alist, which instructsdisplay-buffercalls on how to set up windows for buffers that meet certain conditions. However, some plugins can avoid it entirely if they useset-bufferorswitch-to-buffer, which don’t obeydisplay-buffer-alist.
Multiple popup rules can be defined with set-popup-rules!:
(set-popup-rules!
'(("^ \\*" :slot -1) ; fallback rule for special buffers
("^\\*" :select t)
("^\\*Completions" :slot -1 :ttl 0)
("^\\*\\(?:scratch\\|Messages\\)" :ttl t)
("^\\*Help" :slot -1 :size 0.2 :select t)
("^\\*doom:"
:size 0.35 :select t :modeline t :quit t :ttl t)))
Omitted parameters in a set-popup-rules! will use the defaults set in
+popup-defaults.
By default, the mode-line is hidden in popups. To disable this, you can either:
:modeline property in +popup-defaults:
;; add to $DOOMDIR/config.el
(plist-put +popup-defaults :modeline t)
A value of t will instruct popups to use the default mode-line. Any
popup rule with a :modeline property can still override this.
;; add to ~/.doom.d/config.el
(remove-hook '+popup-buffer-mode-hook #'+popup-set-modeline-on-enable-h)
+popup/other (aliased to other-popup, bound to C-x p)+popup/toggle+popup/close+popup/close-all+popup/toggle+popup/restore+popup/raise+popup-window-p WINDOW+popup-buffer-p BUFFER+popup-buffer BUFFER &optional ALIST+popup-parameter PARAMETER &optional WINDOW+popup-parameter-fn PARAMETER &optional WINDOW+popup-windowswithout-popups!save-popups!+popup-adjust-fringes-h+popup|set-modeline+popup-close-on-escape-h+popup-cleanup-rules-h+popup-mode+popup-buffer-modehelp-mode has been advised to follow file links in the buffer you were in
before entering the popup, rather than in a new window.wgrep buffers are advised to close themselves when aborting or committing
changes.persp-mode is advised to restore popup windows when loading a session from
file.windmove-* commands (used by evil-window-* commands)
will ignore the no-other-window window parameter, allowing you to switch to
popup windows as if they’re ordinary windows.balance-windows has been advised to close popups while it does its business,
then restore them afterwards.neotree advises balance-windows, which causes major slow-downs when paired
with our balance-window advice, so we removes neotree’s advice.org-mode is an ongoing (and huge) effort. It has a scorched-earth window
management system I’m not fond of. ie. it kills all windows and monopolizes
the frame. On top of that, it really likes to use switch-to-buffer for
most of its buffer management, which completely bypasses
display-buffer-alist. Some work has gone into reversing this.此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。