Search code examples
emacselispmodal-dialog

Emacs Modes: "Command attempted to use minibuffer while in minibuffer"


Scenario:

  • I start to type M-x to type a command
  • I switch to another emacs window/buffer because I realise I'm executing the command in the wrong window
  • I start to type M-x again to execute the command in the correct window

Result: I get the dreaded "Command attempted to use minibuffer while in minibuffer"

This happens to me multiple times a day while using emacs, and not just in this scenario. This behaviour is highly user-hostile (ref. Modes and Pseudo-modes in The Humane Interface by Jef Raskin)

Is there a way to customize emacs behaviour so that instead of giving this error, it just cancels the first minibuffer and replaces it with a new one?


Solution

  • Indeed this emacs "feature" is aggressive and annoying. I found this to be the right answer to the problem .Most likely you lost focus of the minibuffer because you switched windows with the mouse and NOT a minibuffer command. So whenever you lose focus using the mouse, the minibuffer will be cleared. Check this post. It works for me and it's way better than recursive minibuffers which will cause a headache

    http://trey-jackson.blogspot.com/2010/04/emacs-tip-36-abort-minibuffer-when.html