Emacs:为临时缓冲区弹出底部窗口

10
我想要一个像编译、自动完成等临时缓冲区的弹出底部窗口。即使根窗口是水平分割的,它也应该垂直分割整个框架。例如: 在执行M-x compile之前:
+------+------+
|      |      |
|      |      |
|      |      |
+------+------+
之后:
+------+------+
|      |      |
+------+------+
|             |
+------+------+
我非常满意ecb-compilation-window,但我不想使用ECB和CEDET。 实际上,我看到了两种方法可以实现所描述的行为,但两种方法都有缺点。 缺点:它使用delete-other-windows功能,然后在分割根窗口后重新构建以前的窗口树。这会使您代码中(或任何模块的代码中)对早期存在的窗口的所有引用都无效。
  • 将window-min-height变量设置为最小可能值(1),并在emacs启动时调用split-window-vertically来在创建窗口后将窗口高度最小化。然后使用此窗口作为临时缓存区,并根据需要设置其高度。
缺点:在框架底部有一个小而烦人的窗口和烦人的模式行,不适用于emacs --daemon。
是否有更优雅的方法来实现这一点而没有任何缺点?
1个回答

13

使用popwin

它可以直接按照您的描述运行,配置也很容易,只需要一行代码即可使我的所有缓冲区在屏幕底部弹出:

(push '("\*anything*" :regexp t :height 20) popwin:special-display-config)

还有更详细的配置示例在日本博客中流传,请自行搜索。


1
等一下,這個作法和前面問題中提到的 split-root.el 函式庫完全相同,因此也有同樣的缺點。 - phils
嗯,popwin比split-root更好(因为它易于配置,且没有恢复垂直窗口原始大小的问题),但它也有与split-root相同的问题。无论如何,我喜欢popwin,我认为我可以忍受它的缺点。谢谢。 - Dan Kruchinin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接