本節では、ファイル名を完成させるための低レベルサブルーチンについて説明します。より高レベルな関数については、ファイル名の読み込みを参照してください。
この関数は、ディレクトリ directory 内でファイル名が partial-filename で始まるファイルについて、考えられるすべての補完候補のリストを返します。補完候補の順序はディレクトリ内のファイル順であり、予測不能で有用な情報は一切含まれていません。
引数 partial-filename は、ディレクトリ部分やスラッシュ(一部のシステムではバックスラッシュ)を含まないファイル名である必要があります。directory が絶対パスでない場合、現在のバッファのデフォルトディレクトリが directory の先頭に付加されます。
以下の例では、~rms/lewis が現在のデフォルトディレクトリであり、‘f’ で始まる名前のファイルが 5 つ(foo、file~、file.c、file.c.~1~、file.c.~2~)あるとします。
(file-name-all-completions "f" "")
⇒ ("foo" "file~" "file.c.~2~"
"file.c.~1~" "file.c")
(file-name-all-completions "fo" "")
⇒ ("foo")
この関数は、ディレクトリ directory 内のファイル名 filename を補完します。また、ディレクトリ directory
内の filename で始まるすべてのファイル名に共通する最長の接頭辞を返します。predicate が nil
以外の場合、展開後の絶対ファイル名を1つの引数として当該関数を呼び出した後、predicate
を満たさない可能性のある補完結果を無視します。
マッチが1件のみ存在し、filename がそれに完全一致する場合、関数は t を返します。ディレクトリ directory に filename で始まる名前が存在しない場合、関数は nil
を返します。
以下の例では、現在のデフォルトディレクトリに、ファイル名が ‘f’ で始まる5つのファイル(foo、file~、file.c、file.c.~1~、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
file-name-completion
は通常、このリストに含まれるいずれかの文字列で終わるファイル名を無視します。考えられる補完候補がすべてこれらの接尾辞のいずれかで終わる場合は、無視しません。この変数は
file-name-all-completions には影響しません。
代表的な値は、次のようになるでしょう。
completion-ignored-extensions
⇒ (".o" ".elc" "~" ".dvi")
completion-ignored-extensions の要素がスラッシュ
‘/’
で終わっている場合、それはディレクトリであることを示します。スラッシュで終わっていない要素がディレクトリに一致することはありません。したがって、上記の値では foo.elc という名前のディレクトリは除外されません。