Next: , Previous: Unique File Names, Up: File Names


25.8.6 File Name Completion

This section describes low-level subroutines for completing a file name. For other completion functions, see Completion.

— 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

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 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 or when a buffer showing all possible completions is displayed.

A typical value might look like this:

          completion-ignored-extensions
               => (".o" ".elc" "~" ".dvi")