Make * Buffer List *始终显示在水平分割中 [英] Make *Buffer List* always appear in horizontal split

查看:97
本文介绍了Make * Buffer List *始终显示在水平分割中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道Emacs试图成为知识分子,根据窗口的尺寸更大,打开辅助缓冲区,因此如果当前宽度大于高度,并且以水平分割方式,则可能会出现在垂直分割窗口中。



但是我希望它始终以水平分割方式打开该列表,因为当缓冲区放置在垂直分割中时,我看不到长的路径。我如何做到这一点?

解决方案

我相信你已经将横向/纵向拆分术语回到前面了(我永远不会记住哪个是哪一个),但是为了保留原始窗口的宽度,我强制垂直拆分。



Ch f split-window-sensably RET 。它告诉你该做什么:

 您可以强制执行此功能,以不水平分割WINDOW,
通过设置(或绑定)变量`split-width-threshold'为
nil。另外,如果将split-height-threshold设置为零,那么
有可能会增加这个函数会垂直拆分WINDOW。

所以作为永久设置:

 (setq split-width-threshold nil)
(setq split-height-threshold 0)
/ pre>

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

 (defadvice list-buffers(围绕list-buffers-split-vertical)

(let((split-width-threshold nil))
(split-height-threshold 0))
ad-do-it))
(广告激活'list-buffers)

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

 (defun my-list-buffers-vertic al-split()
`list-buffers',但强制垂直拆分。
请参见split-window-sensably。
(interactive)
(let((split-width-threshold nil))
(split-height-threshold 0))
(call-interactiveively'list-buffers)))

(全局设置密钥[remap list-buffers]'my-list-buffers-vertical-split)

编辑2: Stefan指出 display-buffer-alist 促进这样的事情,而不提供功能(当然,避免不必要的建议总是一件好事)我相信我们还需要一个自定义的动作,所以:

 (defun my-display-buffer-pop-up-same-width-window(buffer alist)
一个`display-buffer $ action
请参见split-window-sensably和display-buffer-pop-up-window。
(let((split-width-threshold nil)
(split-height-threshold 0))
(display-buffer-pop-up-window buffer alist)))

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


I know Emacs tries to be intellectual and opens its helper buffers depending on which dimension of the window is bigger, so it may appear in vertical split window if current width is bigger than height, and in horizontal split otherwise.

But I’d prefer it to open that list always in horizontal split, because there are long paths I can’t see when the buffer is placed in vertical split. How can I do this?

解决方案

I believe you've got the horizontal/vertical split terminology back to front (I can never remember which is which either), but as your goal was to retain the original window's width, I'm forcing a vertical split.

See C-hf split-window-sensibly RET. It tells you what to do:

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.

So as a permanent setting:

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

For just a specific function, you can advise that function (but see Edit 2 below!):

(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)

Edit: Actually, in this instance I suspect you're only concerned with the interactive case, in which case it's preferable to define a function and remap the bindings:

(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)

Edit 2: And Stefan points out that display-buffer-alist facilitates such things without advising functions (and of course avoiding unnecessary advice is always a good thing). I believe we still need a custom action, so:

(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))

这篇关于Make * Buffer List *始终显示在水平分割中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆