minibuffer同时显示最近3条message

有时候message更新太快,很多重要的提示没有看到,怎么同时显示最近3条message,然后5秒后清空

你可以选择鼠标点 echo area 或者 C-x b Messages,花时间看完最近的 log,然后 C-x 0 关闭。

关键是根本不知道啥时候出error或者waring,如果一飘而过的话。自动切换到Messages,并且把窗口缩小到底部也许是个办法。

别的无所谓,就是如果emacs crash后,auto save存在,让那个提示别飘过去了,或者让我确认一下

解决了 3 条的问题提,error 出现在倒数第 4 条怎么办?

5秒一连串出4条以上的message很少吧?最好有一个回放机制,在idle的时候,把在echo area没有显示足2秒的message全部回放1便

如果未读超出某个上限,直接切换到*Message*

3 条难道就很常见?

解决了 3 条的问题,以后遇到 3-n 或 3+n 条的问题,是不是也要逐一解决?最后都解决了,等于没解决。

根本的问题在于你如何使用 message 或 error。

如果你希望 message 作为提示出现在 echo erea,就应该避免它被冲刷掉,不要在它后面继续打印。例如 region-expand 就是用 echo erea 来提示下一步操作的。

如果超出了你能控制的范围,例如有其它 package 在打印信息。可以试试 abo-abo 的 lv-message,把提示信息置顶固定住,最典型的应用就是 hydra。

如果打印的一般的 log,最好就是去 *Messages* 查看,按 C-h e 也不是多难的事。

如果是非常严重的错误,需要立即停下来处理,就不应该当作普通的 message 打印,应该抛出错误。

2 个赞

嗯 不折腾了,还是只解决眼前问题的好

(advice-add 'find-file :after 'my-maybe-recover-this-file)

(defun my-maybe-recover-this-file (filename &optional wildcards)
(when (file-newer-than-file-p (or buffer-auto-save-file-name
                                    (make-auto-save-file-name))
                                buffer-file-name)
    (recover-file buffer-file-name)))

message 没表示重要程度的机制,就你遇到的问题,直接弹出一个确认窗口询问用户是否要恢复文件更为合适,这用 find-file-hook 不难做到。