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



当我输入minibuffer命令(如打开文件或更改缓冲区时)时,我通常会遇到这样的情况,我没有在minibuffer中完成它,而是开始做其他事情,通常是编辑缓冲区。我希望迷你缓冲区在迷你缓冲区中处于非活动状态一段时间后,如果命令没有完成,就简单地忘记它。有可能吗?

如果能够让迷你缓冲垫在失去焦点后简单地自行冲洗,那也太棒了。现在,我经常看到一排迷你缓冲区命令在等着我,这非常烦人,因为当我对它们进行C-g时,emacs会更改帧中的缓冲区。

我真的不建议做任何类似的事情,而是建议你在迷你缓冲区处于活动状态时为自己提供一条视觉线索。但既然你要求…

您可以在适当的挂钩或计时器中设置退出迷你缓冲区的功能。该函数可以检查(active-minibuffer-window)的值,并在nil时调用(top-level)返回顶级。(函数abort-recursive-edit将退出当前的迷你缓冲区,但可以返回到父(较浅)迷你缓冲区(不一定是"顶级")。

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

您可以使用一个空闲计时器,它只有在Emacs空闲了指定的时间后才会启动。或者你可以使用一个常规计时器,只是定期检查。定时器可以在minibuffer-setup-hook上启动,然后在minibuffer-exit-hook上取消。

最新更新