问题是每次我保存文件路径都很长时,迷你缓冲区的高度会增加并且基本上会立即缩小。有点烦人,因为经常发生。
所以我想缩短(基本名称?)“写:...”消息或将默认(起始)迷你缓冲区高度设为 2 行。或者也许只在 minibuffer 中启用截断,但这并不是很好。
有办法吗?
问题是每次我保存文件路径都很长时,迷你缓冲区的高度会增加并且基本上会立即缩小。有点烦人,因为经常发生。
所以我想缩短(基本名称?)“写:...”消息或将默认(起始)迷你缓冲区高度设为 2 行。或者也许只在 minibuffer 中启用截断,但这并不是很好。
有办法吗?
编辑:我刚刚注意到这个message-truncate-lines
变量,与resize-mini-windows
and不同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-hook
andafter-save-hook
来设置和恢复它。
还有max-mini-window-height
变量,但是在尝试临时设置它时似乎会遇到同样的问题。