Previous: Reading File Names, Up: Completion


19.5.6 プログラム補完

意図した補完候補を持った連想リストやオブジェクト配列を 作成することが困難な場合もあります。 そのような場合、与えられた文字列に対する補完を計算する 独自の関数を与えることができます。 これをプログラム補完(programmed completion)と呼びます。

この機能を使うには、completing-readの引数collectionに 関数定義を持つシンボルを渡します。 関数completing-readは、 try-completionall-completionsに 読者の補完関数を渡すようにして、読者の関数にすべてを任せます。

補完関数はつぎの3つの引数を受け取ります。

3つの操作型に対応してフラグの値は3つあります。

補完関数collectionには関数シンボルに加えて、 ラムダ式(関数であるリスト)も許すほうが 一貫性があって見通しがよいはずですが、それは不可能です。 リストには補完候補表としての意味がすでにあり、連想リストがそれです。 関数としての可能性もある通常の連想リストの扱いに失敗するようでは、 信頼性がなくなります。 そのため、読者が補完に使用したい関数は、 シンボルに入れておく必要があるのです。

Emacsは、ファイル名の補完にはプログラム補完を用います。 See File Name Completion