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

标签 emacs

我知道 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/

相关文章:

模仿 emacs CTL-K 的 Vim 键绑定(bind)

html - 有没有办法从 emacs 中查看呈现的网站?

Emacs 复制当前行

Emacs:在 ansi-term 中具有完全不同的背景颜色

emacs - Magit 结帐大块/还原大块

emacs - 如何使任何 emacs 缓冲区中的组织语法链接看起来像组织模式?

Emacs:字体锁定解释

emacs - 如何让 Emacs org-mode 在 DONE 状态下播放声音文件?

emacs - 如何使用 GNU Emacs 修改 XPM 镜像?

emacs - 在emacs中打开文件: Values that are not safe