21.13 Recursive Minibuffers

These functions and variables deal with recursive minibuffers (see Recursive Editing):

Function: minibuffer-depth

This function returns the current depth of activations of the minibuffer, a nonnegative integer. If no minibuffers are active, it returns zero.

User Option: enable-recursive-minibuffers

If this variable is non-nil, you can invoke commands (such as find-file) that use minibuffers even while the minibuffer is active. Such invocation produces a recursive editing level for a new minibuffer. By default, the outer-level minibuffer is invisible while you are editing the inner one. If you have minibuffer-follows-selected-frame set to nil, you can have minibuffers visible on several frames at the same time. See (emacs)Basic Minibuffer.

If this variable is nil, you cannot invoke minibuffer commands when the minibuffer is active, not even if you switch to another window to do it.

If a command name has a property enable-recursive-minibuffers that is non-nil, then the command can use the minibuffer to read arguments even if it is invoked from the minibuffer. A command can also achieve this by binding enable-recursive-minibuffers to t in the interactive declaration (see Using interactive). The minibuffer command next-matching-history-element (normally M-s in the minibuffer) does the latter.