【发布时间】:2012-11-05 19:09:30
【问题描述】:
我通常使用 emacs,将单个框架拆分为垂直堆叠的 2 个窗口。
在 emacs 23(及之前)中,当我遇到编译器警告的一行时,回显区域/迷你缓冲区将扩展以显示消息的整个文本(如果消息超过一行),但是否则 2 个主窗口将不受影响(因此底部窗口可能会暂时失去一行或 2 行显示)。
然而,在 emacs 24 中,整个底部窗口(在 minibuffer 上方)向上移动,因此顶部窗口最终会暂时丢失一行或 2 行显示。我发现整个底部窗口移动并想回到 emacs 23(及更早版本)的行为,这在视觉上非常令人不安。
我查看了 emacs 手册(windows、frames、minibuffer、echo area)和版本 24 NEWS 并没有找到任何提及可能导致此行为的更改或可能能够来控制这种行为。任何指针将不胜感激。
更新:
重现行为:
- 打开 emacs 24,将框架拆分为 2 个窗口,一个在另一个之上
- 在顶部窗口中打开一些充满文本的缓冲区
- 在底部窗口打开
"*scratch*"缓冲区 - 将此 sn-p 添加到您的暂存缓冲区并从光标处执行它(使用
eval-last-sexp,Cx Ce),确保测试消息足够长,可以在窗口中换行
(message "this is a very long message that will cause the minibuffer window to show more than one line of text and cause the whole bottom window to shift as a result in emacs 24")
这应该会导致 "*scratch*" 缓冲区窗口在 minibuffer 显示消息时向上移动,并在消息消失时返回。如果您在 emacs 23 中尝试相同的测试,"*scratch*" 缓冲区窗口将不会移动。
更新 2:
为了进一步澄清(也许我的描述让一些人感到困惑),但问题是 不是 与 minibuffer 行为。 minibuffer 的行为很好并且没有改变(它暂时调整大小以显示所有文本)。我指的是窗口上方 minibuffer(2个主缓冲区窗口的下部窗口)的行为。在 emacs 23 中,这个窗口根本没有移动(所以下面的行暂时被遮住了)。在 emacs 24 中,此窗口中的所有文本都会随着 minibuffer 调整大小而上移。这是新的、有问题的行为。
【问题讨论】:
-
你的意思是 minibuffer 增长了吗?
-
@tripleee - 是的,minibuffer/echo 区域扩展了,因为消息不止一行。
-
你能做一个程序,让我们重现吗?
-
@alinsoar - 当然,用一个简单的例子更新......
-
@wvxvw - 我在终端和 gui 中得到相同的行为。我也使用 kde 作为我的窗口管理器。 (使用 emacs 24.2.1)。