3

问题是每次我保存文件路径都很长时,迷你缓冲区的高度会增加并且基本上会立即缩小。有点烦人,因为经常发生。

所以我想缩短(基本名称?)“写:...”消息或将默认(起始)迷你缓冲区高度设为 2 行。或者也许只在 minibuffer 中启用截断,但这并不是很好。

有办法吗?

4

1 回答 1

4

编辑:我刚刚注意到这个message-truncate-lines变量,与resize-mini-windowsand不同max-mini-window-height,我实际上可以让这个变量按照我想要的方式运行:

(defadvice save-buffer (around my-save-mini-window-size)
  "Don't increase the size of the echo area if the path of the file being saved is too long to show on one line."
  (let ((message-truncate-lines t))
    ad-do-it))
(ad-activate 'save-buffer)

原始答案如下(我很想知道为什么用类似的建议设置其他变量没有达到预期的效果,如果有人可以详细说明吗?)

我认为弄乱消息本身会很麻烦(无论如何都是个坏主意)。write-region(在 fileio.c 中)确实谈到了它的论点If VISIT is neither t nor nil nor a string, that means do not display the "Wrote file" message,但我强烈怀疑强制执行它是否明智。

我认为唯一明智的方法是防止 minibuffer 调整大小而不管消息长度如何。以下将执行此操作,但对于不仅仅是保存文件的更多情况:

(setq resize-mini-windows nil)

我在这里的常规方法是为我们感兴趣的函数(我在想save-buffer)写一些建议,以临时设置该值,但无论出于何种原因,这都没有达到预期的效果。

同样使用before-save-hookandafter-save-hook来设置和恢复它。

还有max-mini-window-height变量,但是在尝试临时设置它时似乎会遇到同样的问题。

于 2012-03-17T10:35:13.910 回答