Next: , Previous: , Up: File Names   [Contents][Index]


24.8.6 File Name Completion

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

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の場合は、この関数を1引数で呼び出して絶対ファイル名に展開後、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という名前のディレクトリーを除外しないだろう。