emacs: Minibuffer Edit

 
 8.3 Editing in the Minibuffer
 =============================
 
 The minibuffer is an Emacs buffer, albeit a peculiar one, and the usual
 Emacs commands are available for editing the argument text.  (The
 prompt, however, is “read-only”, and cannot be changed.)
 
    Since <RET> in the minibuffer submits the argument, you can’t use it
 to insert a newline.  You can do that with ‘C-q C-j’, which inserts a
 ‘C-j’ control character, which is formally equivalent to a newline
 character (SeeInserting Text).  Alternatively, you can use the
 ‘C-o’ (‘open-line’) command (SeeBlank Lines).
 
    Inside a minibuffer, the keys <TAB>, <SPC>, and ‘?’ are often bound
 to “completion commands”, which allow you to easily fill in the desired
 text without typing all of it.  SeeCompletion.  As with <RET>, you
 can use ‘C-q’ to insert a <TAB>, <SPC>, or ‘?’ character.
 
    For convenience, ‘C-a’ (‘move-beginning-of-line’) in a minibuffer
 moves point to the beginning of the argument text, not the beginning of
 the prompt.  For example, this allows you to erase the entire argument
 with ‘C-a C-k’.
 
    When the minibuffer is active, the echo area is treated much like an
 ordinary Emacs window.  For instance, you can switch to another window
 (with ‘C-x o’), edit text there, then return to the minibuffer window to
 finish the argument.  You can even kill text in another window, return
 to the minibuffer window, and yank the text into the argument.  There
 are some restrictions on the minibuffer window, however: for instance,
 you cannot split it.  SeeWindows.
 
    Normally, the minibuffer window occupies a single screen line.
 However, if you add two or more lines’ worth of text into the
 minibuffer, it expands automatically to accommodate the text.  The
 variable ‘resize-mini-windows’ controls the resizing of the minibuffer.
 The default value is ‘grow-only’, which means the behavior we have just
 described.  If the value is ‘t’, the minibuffer window will also shrink
 automatically if you remove some lines of text from the minibuffer, down
 to a minimum of one screen line.  If the value is ‘nil’, the minibuffer
 window never changes size automatically, but you can use the usual
 window-resizing commands on it (SeeWindows).
 
    The variable ‘max-mini-window-height’ controls the maximum height for
 resizing the minibuffer window.  A floating-point number specifies a
 fraction of the frame’s height; an integer specifies the maximum number
 of lines; ‘nil’ means do not resize the minibuffer window automatically.
 The default value is 0.25.
 
    The ‘C-M-v’ command in the minibuffer scrolls the help text from
 commands that display help text of any sort in another window.  You can
 also scroll the help text with ‘M-<prior>’ and ‘M-<next>’ (or,
 equivalently, ‘M-<PageUp>’ and ‘M-<PageDown>’).  This is especially
 useful with long lists of possible completions.  SeeOther Window.
 
    Emacs normally disallows most commands that use the minibuffer while
 the minibuffer is active.  To allow such commands in the minibuffer, set
 the variable ‘enable-recursive-minibuffers’ to ‘t’.
 
    When not active, the minibuffer is in ‘minibuffer-inactive-mode’, and
 clicking ‘mouse-1’ there shows the ‘*Messages*’ buffer.  If you use a
 dedicated frame for minibuffers, Emacs also recognizes certain keys
 there, for example ‘n’ to make a new frame.