【问题标题】:How to kill minibuffer after period of inactivity?如何在不活动期后杀死 minibuffer?
【发布时间】:2013-09-02 12:27:11
【问题描述】:

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

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

【问题讨论】:

    标签: emacs minibuffer


    【解决方案1】:

    我不建议您做任何此类事情,但建议您在 minibuffer 处于活动状态时为自己提供视觉线索。但是既然你要求...

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多