3

当我在 OSX 上升级到(vanilla)emacs 24.1 时,使用 iswitch 切换缓冲区的行为似乎有所不同。

当我按 ctrl-x b 切换缓冲区时,它不是将缓冲区列表限制为 1 行,而是通过将迷你缓冲区扩展为几行长来显示每个缓冲区,然后在我输入缓冲区名称时逐步删除缓冲区我正在切换到。

我发现每当我切换缓冲区以分散视觉注意力时,状态栏和迷你缓冲区就会上下颠簸,所以我想恢复以前的行为,这会切断 1 行之后的缓冲区名称。我该怎么做呢?

4

2 回答 2

5

如果您想将 minibuffer 使用的行数全局限制为一行,这应该有效:

(setq max-mini-window-height 1)

来自文档的附加信息:

变量 max-mini-window-height 控制调整 minibuffer 窗口大小的最大高度。浮点数指定框架高度的一部分;一个整数指定最大行数;nil 表示不自动调整 minibuffer 窗口的大小。默认值为 0.25。

但是,如果您只想限制 iswitchb 使用的 minibuffer 行数,iswitchb-minibuffer-setup-hook 的文档建议:

特定于 Iswitchb 的 minibuffer 设置定制。

如果 `iswitchb' 处于活动状态,则此挂钩在 minibuffer 设置期间运行。例如:

(add-hook 'iswitchb-minibuffer-setup-hook
    (lambda ()
        (set (make-local-variable 'max-mini-window-height) 3)))

当 iswitchb 运行时,将 minibuffer 的最大高度限制为 3 行。

于 2012-07-01T22:23:11.300 回答
3

我认为这种行为在 Emacs 23 和 Emacs 24 之间没有改变,所以我不确定为什么你现在才看到这个。也许您进行了一些自定义来获得这种行为,但它现在无法在 Emacs 24 中工作?如果是这样,请报告它,以便我们修复它。

另请注意,在 Emacs 24 中,默认(非iswitchb)缓冲区切换的行为非常接近iswitchb的行为。最明显的区别是显示可能的完成,您也可以使用M-x icomplete-mode,这不影响实际行为,仅影响显示,但也会影响其他完成。还icomplete-mode尝试将其显示的完成列表限制为大约一行(除了实际的 minibuffer 的内容,所以你仍然会得到一些换行,但更少)。

于 2012-07-03T14:49:45.527 回答