如何在一段时间不活动后杀死迷你缓冲区?

时间:2013-09-02 12:27:12

标签: emacs minibuffer

当我输入打开文件或更改缓冲区等迷你缓冲区命令时,我经常会遇到这种情况,而不是在迷你缓冲区中完成它,我开始做其他事情,通常编辑缓冲区。如果迷你缓冲器在一段时间不活动后没有完成,我希望迷你缓冲器完全忘记命令。可能吗?

如果可以让迷你缓冲器在失去焦点后简单地冲洗自己,那也会很棒。现在经常我得到等待我的迷你缓冲命令队列,这很烦人,因为当我给它们做C-g时,emacs会改变帧中的缓冲区。

1 个答案:

答案 0 :(得分:2)

我不会建议做任何类似的事情,但建议您在迷你缓冲区激活时为自己提供视觉线索。但既然你要求它......

您可以在合适的挂钩或计时器中放置一个函数来退出迷你缓冲区。该函数可以检查(active-minibuffer-window)的值,并调用(top-level),只要它是nil,就会返回到顶层。 (函数abort-recursive-edit将退出当前的迷你缓冲区,但这可以返回到父(浅)迷你缓冲区,不一定是'顶级'。

使用什么钩子或计时器?您可以使用`post-command-hook',它在每个命令之后运行(例如,每次按键)。这可能是矫枉过正,但不会错过任何机会。也许还有另一个更有针对性的钩子;说不上。

您可以使用空闲计时器,该计时器仅在Emacs空闲指定时间后启动。或者您可以使用常规计时器,只需定期检查。可以在minibuffer-setup-hook上启动计时器,然后在minibuffer-exit-hook上取消。

相关问题