Next: , Previous: , Up: ファイルの名前   [Contents][Index]


26.9.6 ファイル名の補完

このセクションではファイル名を補完するための低レベルサブルーチンについて説明します。より高レベルの関数についてはファイル名の読み取りを参照してください。

Function: file-name-all-completions partial-filename directory

この関数はディレクトリーdirectory内でpartial-filenameで始まる名前のファイルにたいする、すべての補完可能なリストをリターンする。補完の順番はそのディレクトリー内でのファイル順序であり、これは予測不能であり何の情報ももたない。

引数partial-filenameは非ディレクトリーパートを含むファイル名でなければならず、スラッシュ(いくつかのシステムではバックスラッシュ)が含まれていてはならない。directoryが絶対ディレクトリーでなければ、directoryの前にカレントバッファーのデフォルトディレクトリーが追加される。

以下の例では~rms/lewisがカレントデフォルトディレクトリーで、名前が‘f’で始まる5つのファイルfoofile~file.cfile.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")
Function: file-name-completion filename directory &optional predicate

この関数はディレクトリーdirectory内でファイル名filenameを補完する。これはディレクトリーdirectory内で、filenameで始まるすべてのファイル名にたいして、最長の共通プレフィックスをリターンする。predicateが非nilなら展開された絶対ファイル名を単一の引数として呼び出して、predicateを満足しない補完候補を無視する。

マッチが1つだけ存在して、かつfilenameが正確にそれにマッチする場合には、この関数はtをリターンする。関数はディレクトリーdirectoryfilenameで始まる名前のファイルを含まなければnilをリターンする。

以下の例では~rms/lewisがカレントデフォルトディレクトリーで、名前が‘f’で始まる5つのファイルfoofile~file.cfile.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
User Option: completion-ignored-extensions

file-name-completionはこのリスト内の任意の文字列で終わるファイル名を通常は無視する。すべての可能な補完がこれらのサフィックスのいずれか1つで終わるときはそれらを無視しない。この変数はfile-name-all-completionsに影響しない。

以下は典型的な値:

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

completion-ignored-extensionsのある要素がスラッシュ‘/’で終わる場合には、それはディレクトリーを示す。スラッシュで終わらない要素がディレクトリーにマッチすることは決してない。したがって上記の値はfoo.elcという名前のディレクトリーを除外しないだろう。