gpt4 book ai didi

emacs - 使 *Buffer List* 始终出现在水平拆分中

转载 作者:行者123 更新时间:2023-12-04 12:21:22 25 4
gpt4 key购买 nike

我知道 Emacs 试图变得聪明,并根据窗口的哪个尺寸更大来打开它的辅助缓冲区,因此如果当前宽度大于高度,它可能会出现在垂直拆分窗口中,否则会出现在水平拆分窗口中。

但我更希望它始终以水平拆分打开该列表,因为当缓冲区放置在垂直拆分时,我看不到长路径。我怎样才能做到这一点?

最佳答案

我相信您已经将水平/垂直拆分术语从后到前(我永远不记得哪个是哪个),但是由于您的目标是保留原始窗口的宽度,所以我强制进行垂直拆分。

见 C-hf split-window-sensibly RET。它告诉你该怎么做:

You can enforce this function to not split WINDOW horizontally,
by setting (or binding) the variable `split-width-threshold' to
nil. If, in addition, you set `split-height-threshold' to zero,
chances increase that this function does split WINDOW vertically.

所以作为一个永久设置:

(setq split-width-threshold nil)
(setq split-height-threshold 0)

对于特定功能,您可以建议该功能(但请参阅下面的编辑 2!):

(defadvice list-buffers (around list-buffers-split-vertically)
"Always split vertically when displaying the buffer list.
See `split-window-sensibly'."
(let ((split-width-threshold nil)
(split-height-threshold 0))
ad-do-it))
(ad-activate 'list-buffers)

编辑:实际上,在这种情况下,我怀疑您只关心交互式案例,在这种情况下,最好定义一个函数并重新映射绑定(bind):

(defun my-list-buffers-vertical-split ()
"`list-buffers', but forcing a vertical split.
See `split-window-sensibly'."
(interactive)
(let ((split-width-threshold nil)
(split-height-threshold 0))
(call-interactively 'list-buffers)))

(global-set-key [remap list-buffers] 'my-list-buffers-vertical-split)

编辑 2: Stefan 指出 display-buffer-alist在不建议功能的情况下促进此类事情(当然避免不必要的建议总是一件好事)。我相信我们仍然需要一个自定义操作,所以:

(defun my-display-buffer-pop-up-same-width-window (buffer alist)
"A `display-buffer' ACTION forcing a vertical window split.
See `split-window-sensibly' and `display-buffer-pop-up-window'."
(let ((split-width-threshold nil)
(split-height-threshold 0))
(display-buffer-pop-up-window buffer alist)))

(add-to-list 'display-buffer-alist
'("\\*Buffer List\\*" my-display-buffer-pop-up-same-width-window))

关于emacs - 使 *Buffer List* 始终出现在水平拆分中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com