elisp: Completion Commands

 
 19.6.3 Minibuffer Commands that Do Completion
 ---------------------------------------------
 
 This section describes the keymaps, commands and user options used in
 the minibuffer to do completion.
 
  -- Variable: minibuffer-completion-table
      The value of this variable is the completion table used for
      completion in the minibuffer.  This is the global variable that
      contains what ‘completing-read’ passes to ‘try-completion’.  It is
      used by minibuffer completion commands such as
      ‘minibuffer-complete-word’.
 
  -- Variable: minibuffer-completion-predicate
      This variable’s value is the predicate that ‘completing-read’
      passes to ‘try-completion’.  The variable is also used by the other
      minibuffer completion functions.
 
  -- Variable: minibuffer-completion-confirm
      This variable determines whether Emacs asks for confirmation before
      exiting the minibuffer; ‘completing-read’ binds this variable, and
      the function ‘minibuffer-complete-and-exit’ checks the value before
      exiting.  If the value is ‘nil’, confirmation is not required.  If
      the value is ‘confirm’, the user may exit with an input that is not
      a valid completion alternative, but Emacs asks for confirmation.
      If the value is ‘confirm-after-completion’, the user may exit with
      an input that is not a valid completion alternative, but Emacs asks
      for confirmation if the user submitted the input right after any of
      the completion commands in ‘minibuffer-confirm-exit-commands’.
 
  -- Variable: minibuffer-confirm-exit-commands
      This variable holds a list of commands that cause Emacs to ask for
      confirmation before exiting the minibuffer, if the REQUIRE-MATCH
      argument to ‘completing-read’ is ‘confirm-after-completion’.  The
      confirmation is requested if the user attempts to exit the
      minibuffer immediately after calling any command in this list.
 
  -- Command: minibuffer-complete-word
      This function completes the minibuffer contents by at most a single
      word.  Even if the minibuffer contents have only one completion,
      ‘minibuffer-complete-word’ does not add any characters beyond the
      first character that is not a word constituent.  SeeSyntax
      Tables.
 
  -- Command: minibuffer-complete
      This function completes the minibuffer contents as far as possible.
 
  -- Command: minibuffer-complete-and-exit
      This function completes the minibuffer contents, and exits if
      confirmation is not required, i.e., if
      ‘minibuffer-completion-confirm’ is ‘nil’.  If confirmation _is_
      required, it is given by repeating this command immediately—the
      command is programmed to work without confirmation when run twice
      in succession.
 
  -- Command: minibuffer-completion-help
      This function creates a list of the possible completions of the
      current minibuffer contents.  It works by calling ‘all-completions’
      using the value of the variable ‘minibuffer-completion-table’ as
      the COLLECTION argument, and the value of
      ‘minibuffer-completion-predicate’ as the PREDICATE argument.  The
      list of completions is displayed as text in a buffer named
      ‘*Completions*’.
 
  -- Function: display-completion-list completions
      This function displays COMPLETIONS to the stream in
      ‘standard-output’, usually a buffer.  (SeeRead and Print, for
      more information about streams.)  The argument COMPLETIONS is
      normally a list of completions just returned by ‘all-completions’,
      but it does not have to be.  Each element may be a symbol or a
      string, either of which is simply printed.  It can also be a list
      of two strings, which is printed as if the strings were
      concatenated.  The first of the two strings is the actual
      completion, the second string serves as annotation.
 
      This function is called by ‘minibuffer-completion-help’.  A common
      way to use it is together with ‘with-output-to-temp-buffer’, like
      this:
 
           (with-output-to-temp-buffer "*Completions*"
             (display-completion-list
               (all-completions (buffer-string) my-alist)))
 
  -- User Option: completion-auto-help
      If this variable is non-‘nil’, the completion commands
      automatically display a list of possible completions whenever
      nothing can be completed because the next character is not uniquely
      determined.
 
  -- Variable: minibuffer-local-completion-map
      ‘completing-read’ uses this value as the local keymap when an exact
      match of one of the completions is not required.  By default, this
      keymap makes the following bindings:
 
      ‘?’
           ‘minibuffer-completion-help’
 
      <SPC>
           ‘minibuffer-complete-word’
 
      <TAB>
           ‘minibuffer-complete’
 
      and uses ‘minibuffer-local-map’ as its parent keymap (See
      Definition of minibuffer-local-map).
 
  -- Variable: minibuffer-local-must-match-map
      ‘completing-read’ uses this value as the local keymap when an exact
      match of one of the completions is required.  Therefore, no keys
      are bound to ‘exit-minibuffer’, the command that exits the
      minibuffer unconditionally.  By default, this keymap makes the
      following bindings:
 
      ‘C-j’
           ‘minibuffer-complete-and-exit’
 
      <RET>
           ‘minibuffer-complete-and-exit’
 
      and uses ‘minibuffer-local-completion-map’ as its parent keymap.
 
  -- Variable: minibuffer-local-filename-completion-map
      This is a sparse keymap that simply unbinds <SPC>; because
      filenames can contain spaces.  The function ‘read-file-name’
      combines this keymap with either ‘minibuffer-local-completion-map’
      or ‘minibuffer-local-must-match-map’.