elisp: File Name Completion

 
 24.8.6 File Name Completion
 ---------------------------
 
 This section describes low-level subroutines for completing a file name.
 For higher level functions, see SeeReading File Names.
 
  -- Function: file-name-all-completions partial-filename directory
      This function returns a list of all possible completions for a file
      whose name starts with PARTIAL-FILENAME in directory DIRECTORY.
      The order of the completions is the order of the files in the
      directory, which is unpredictable and conveys no useful
      information.
 
      The argument PARTIAL-FILENAME must be a file name containing no
      directory part and no slash (or backslash on some systems).  The
      current buffer’s default directory is prepended to DIRECTORY, if
      DIRECTORY is not absolute.
 
      In the following example, suppose that ‘~rms/lewis’ is the current
      default directory, and has five files whose names begin with ‘f’:
      ‘foo’, ‘file~’, ‘file.c’, ‘file.c.~1~’, and ‘file.c.~2~’.
 
           (file-name-all-completions "f" "")
                ⇒ ("foo" "file~" "file.c.~2~"
                           "file.c.~1~" "file.c")
 
           (file-name-all-completions "fo" "")
                ⇒ ("foo")
 
  -- Function: file-name-completion filename directory &optional
           predicate
      This function completes the file name FILENAME in directory
      DIRECTORY.  It returns the longest prefix common to all file names
      in directory DIRECTORY that start with FILENAME.  If PREDICATE is
      non-‘nil’ then it ignores possible completions that don’t satisfy
      PREDICATE, after calling that function with one argument, the
      expanded absolute file name.
 
      If only one match exists and FILENAME matches it exactly, the
      function returns ‘t’.  The function returns ‘nil’ if directory
      DIRECTORY contains no name starting with FILENAME.
 
      In the following example, suppose that the current default
      directory has five files whose names begin with ‘f’: ‘foo’,
      ‘file~’, ‘file.c’, ‘file.c.~1~’, and ‘file.c.~2~’.
 
           (file-name-completion "fi" "")
                ⇒ "file"
 
           (file-name-completion "file.c.~1" "")
                ⇒ "file.c.~1~"
 
           (file-name-completion "file.c.~1~" "")
                ⇒ t
 
           (file-name-completion "file.c.~3" "")
                ⇒ nil
 
  -- User Option: completion-ignored-extensions
      ‘file-name-completion’ usually ignores file names that end in any
      string in this list.  It does not ignore them when all the possible
      completions end in one of these suffixes.  This variable has no
      effect on ‘file-name-all-completions’.
 
      A typical value might look like this:
 
           completion-ignored-extensions
                ⇒ (".o" ".elc" "~" ".dvi")
 
      If an element of ‘completion-ignored-extensions’ ends in a slash
      ‘/’, it signals a directory.  The elements which do _not_ end in a
      slash will never match a directory; thus, the above value will not
      filter out a directory named ‘foo.elc’.