如何使emacs在保存时显示迷你缓冲区中的短(非完整)文件路径?

时间:2012-03-17 08:40:14

标签: emacs save minibuffer

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

所以我想要缩短(basename?)“write:...”消息或者使默认(起始)迷你缓冲区高度为2行。或者可能只在迷你缓冲区中启用截断,但这并不是很好。

有办法吗?

1 个答案:

答案 0 :(得分:4)

修改:我刚刚注意到message-truncate-lines变量,与resize-mini-windowsmax-mini-window-height不同,我实际上可以按照我想要的方式行事:< / p>

(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,但我强烈怀疑执行这些是明智的。

我认为唯一合理的方法是阻止迷你缓冲区调整大小,而不管消息长度如何。以下内容将执行此操作,但更多情况不仅仅是保存文件:

(setq resize-mini-windows nil)

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

与使用before-save-hookafter-save-hook设置和恢复它类似。

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