我通常在输入 minibuffer 命令时遇到这种情况,例如打开文件或更改缓冲区,而不是在 minibuffer 中完成它,我开始做其他事情,通常是编辑缓冲区。如果在 minibuffer 中一段时间不活动后没有完成,我希望 minibuffer 简单地忘记命令。可能吗?
如果可以让 minibuffer 在失去焦点后简单地刷新它,那也很棒。现在,我经常得到等待我的 minibuffer 命令队列,这很烦人,因为当我对它们进行 Cg 时,emacs 会更改帧中的缓冲区。
我通常在输入 minibuffer 命令时遇到这种情况,例如打开文件或更改缓冲区,而不是在 minibuffer 中完成它,我开始做其他事情,通常是编辑缓冲区。如果在 minibuffer 中一段时间不活动后没有完成,我希望 minibuffer 简单地忘记命令。可能吗?
如果可以让 minibuffer 在失去焦点后简单地刷新它,那也很棒。现在,我经常得到等待我的 minibuffer 命令队列,这很烦人,因为当我对它们进行 Cg 时,emacs 会更改帧中的缓冲区。
我不会真的建议做任何事情,但会建议您在迷你缓冲区处于活动状态时为自己提供视觉线索。但既然你要求...
您可以在合适的钩子或计时器中放置一个函数来退出迷你缓冲区。该函数可以检查 的值(active-minibuffer-window)
并调用,例如,(top-level)
只要它是 就返回到顶层nil
。(函数abort-recursive-edit
将退出当前的 minibuffer,但可以返回父(较浅的)minibuffer,不一定是“顶级”。
使用什么钩子或计时器?你可以使用`post-command-hook',它在每个命令之后运行(例如,每次按键)。这可能是矫枉过正,但它不会错过任何机会。也许还有另一个更相关的钩子;不知道。
您可以使用空闲计时器,它仅在 Emacs 空闲指定时间后才会启动。或者您可以使用常规计时器,只是定期检查。计时器可以在 开始minibuffer-setup-hook
,然后在 取消minibuffer-exit-hook
。