1

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

如果可以让 minibuffer 在失去焦点后简单地刷新它,那也很棒。现在,我经常得到等待我的 minibuffer 命令队列,这很烦人,因为当我对它们进行 Cg 时,emacs 会更改帧中的缓冲区。

4

1 回答 1

2

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

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

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

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

于 2013-09-02T16:12:16.857 回答