Emacs:用于临时缓冲区的弹出式底部窗口

Emacs:用于临时缓冲区的弹出式底部窗口,emacs,elisp,Emacs,Elisp,我希望有一个弹出式底部窗口,用于编译、完成等临时缓冲区。它应该垂直分割整个帧,即使根窗口是水平分割的。例如: 在M-x编译之前: +------+------+ | | | | | | | | | +------+------+ +------+------+ | | | | | | | | | +------+------+ 之后: +------+------+ |

我希望有一个弹出式底部窗口,用于编译、完成等临时缓冲区。它应该垂直分割整个帧,即使根窗口是水平分割的。例如: 在M-x编译之前:

+------+------+ | | | | | | | | | +------+------+ +------+------+ | | | | | | | | | +------+------+ 之后:

+------+------+ | | | +------+------+ | | +------+------+ +------+------+ | | | +------+------+ | | +------+------+ 我完全满意,但我不想使用ECB和CEDET。 事实上,我看到有两种方法可以做出描述的行为,但都有各自的缺点

  • 使用模块
缺点:它使用删除其他窗口功能,然后根据需要拆分根窗口后重建以前的窗口树。它会使代码(或任何模块的代码)中对现有早期窗口的所有引用无效

  • 将window min height变量设置为其可能的最小值(1),并在emacs启动期间垂直调用split window,在创建后最小化窗口高度。然后将此窗口用于临时缓冲区,根据需要设置其高度
缺点:框架底部有恼人的modeline的恼人窗口,不适用于emacs——守护进程

有没有更优雅的方法可以做到这一点而没有缺点?

使用

它的行为就像您开箱即用的描述,配置也很简单,只需一行代码就可以在屏幕底部弹出my anything buffers:

(按下“(“\*anything*”:regexp t:height 20)popwin:special display config)


日本博客上到处都有一些更详细的配置示例,只需谷歌一下。

等等,这与问题中提到的split-root.el库的工作方式相同,因此有着完全相同的缺点。popwin比split-root更好(因为它很容易配置,并且在恢复垂直窗口的原始大小方面没有问题),但它也有split root所遇到的问题。无论如何,我喜欢popwin,我认为我可以忍受它的缺点。谢谢。