Emacs 如何在一段时间不活动后杀死微型缓冲区?

Emacs 如何在一段时间不活动后杀死微型缓冲区?,emacs,minibuffer,Emacs,Minibuffer,我通常会遇到这样的情况,当我输入minibuffer命令,比如openfile或changebuffer时,我并没有在minibuffer中完成它,而是开始做其他事情,通常是编辑缓冲区。我希望minibuffer在minibuffer中经过一段时间的不活动后,如果该命令没有完成,就干脆忘记该命令。可能吗 如果有可能使微型缓冲区在失去焦点后自动刷新,那也太好了。现在,我经常会收到等待我的minibuffer命令队列,这非常烦人,因为当我对它们进行C-g时,emacs会更改帧中的缓冲区 我不建议你做

我通常会遇到这样的情况,当我输入minibuffer命令,比如openfile或changebuffer时,我并没有在minibuffer中完成它,而是开始做其他事情,通常是编辑缓冲区。我希望minibuffer在minibuffer中经过一段时间的不活动后,如果该命令没有完成,就干脆忘记该命令。可能吗


如果有可能使微型缓冲区在失去焦点后自动刷新,那也太好了。现在,我经常会收到等待我的minibuffer命令队列,这非常烦人,因为当我对它们进行C-g时,emacs会更改帧中的缓冲区

我不建议你做任何类似的事情,但我建议你在迷你缓冲区激活时给自己提供一个视觉线索。但既然是你自找的

您可以将退出迷你缓冲区的函数放在合适的挂钩或计时器上。该函数可以检查
(活动小缓冲区窗口)
的值,并调用,例如,
(顶级)
,以在
为nil时返回顶级。(函数
abort recursive edit
将退出当前的小缓冲区,但可以返回到父级(较浅的)小缓冲区,而不一定是“顶级”

使用什么钩子或计时器?您可以使用“post command hook”,它在每个命令(例如,每次按键)后运行。这可能有些过分,但不会错过任何机会。可能还有另一个更相关的钩子;不知道

您可以使用空闲计时器,该计时器仅在Emacs空闲指定时间后启动。也可以使用常规计时器,只需定期检查。可以在
微缓冲区设置挂钩
上启动计时器,然后在
微缓冲区退出挂钩
上取消计时器