Next: 入力の初期値, Previous: ミニバッファーでのLispオブジェクトの読み取り, Up: ミニバッファー [Contents][Index]
ミニバッファーヒストリーリスト(minibuffer history list)は手軽に再利用できるように以前のミニバッファー入力を記録します。ミニバッファーヒストリーリストは、(以前に入力された)文字列のリストであり、もっとも最近の文字列が先頭になります。
多数のミニバッファーが個別に存在し、異なる入力の種類に使用されます。それぞれのミニバッファー使用にたいして正しいヒストリーリストを指定するのはLispプログラマーの役目です。
ミニバッファーヒストリーリストは、read-from-minibufferとcompleting-readのオプション引数historyに指定します。以下が利用できる値です:
ヒストリーリストとしてvariable(シンボル)を使用する。
ヒストリーリストとしてvariable(シンボル)を使用して、ヒストリー位置の初期値をstartpos(負の整数)とみなす。
startposに0を指定するのは、単にシンボルvariableだけを指定するのと等価である。previous-history-elementはミニバッファー内のヒストリーリストの最新の要素を表示するだろう。
正のstartposを指定すると、ミニバッファーヒストリー関数は(elt variable(1-
startpos))がミニバッファー内でカレントで表示されているヒストリー要素であるかのように振る舞う。
一貫性を保つためにミニバッファー入力関数のinitial引数(入力の初期値を参照)を使用して、ミニバッファーの初期内容となるヒストリー要素も指定すべきである。
historyを指定しない場合には、デフォルトのヒストリーリストminibuffer-historyが使用されます。他の標準的なヒストリーリストについては以下を参照してください。最初に使用する前にnilに初期化するだけで、独自のヒストリーリストを作成することもできます。変数がバッファーローカルなら各バッファーが独自に入力ヒストリーリストを所有することになります。
read-from-minibufferとcompleting-readは、どちらも新たな要素を自動的にヒストリーリストに追加して、ユーザーがそのリストのアイテムを再使用するためのコマンドを提供します。ヒストリーリストを使用するためにプログラムが行う必要があるのはリストの初期化と、使用するときに入力関数にリストの名前を渡すだけです。しかしミニバッファー入力関数がリストを使用していないときに手動でリストを変更しても問題はありません。
新たな要素をヒストリーリストに追加するEmacs関数は、リストが長くなりすぎたときに古い要素の削除を行うこともできます。変数history-lengthは、ほとんどのヒストリーリストの最大長を指定する変数です。特定のヒストリーリストにたいして異なる最大長を指定するには、そのヒストリーリストのシンボルのhistory-lengthプロパティにその最大長をセットします。変数history-delete-duplicatesにはヒストリー内の重複を削除するかどうかを指定します。
この関数はneweltが空文字列でなければ、それを新たな要素として変数history-varに格納されたヒストリーリストに追加して、更新されたヒストリーリストをリターンする。これはmaxeltかhistory-lengthがが非nilなら、リストの長さをその変数の値に制限する(以下参照)。maxeltに指定できる値の意味はhistory-lengthの値と同様。history-varはレキシカル変数を参照できない。
add-to-historyは通常はhistory-delete-duplicatesが非nilならば、ヒストリーリスト内の重複メンバーを削除する。しかしkeep-allが非nilなら、それは重複を削除しないことを意味し、たとえneweltが空でもリストに追加する。
この変数の値がnilなら、ミニバッファーから読み取りを行う標準的な関数はヒストリーリストに新たな要素を追加しない。これによりLispプログラムがadd-to-historyを使用して明示的に入力ヒストリーを管理することになる。デフォルト値はt。
この変数の値は、最大長を独自に指定しないすべてのヒストリーリストの最大長を指定する。値がtなら最大長がない(古い要素を削除しない)ことを意味する。ヒストリーリスト変数のシンボルのhistory-lengthプロパティが非nilなら、その特定のヒストリーリストにたいする最大長として、そのプロパティ値がこの変数をオーバーライドする。
この変数の値がtなら、それは新たなヒストリー要素の追加時に以前からある等しい要素が削除されることを意味する。
以下は標準的なミニバッファーヒストリーリスト変数です:
ミニバッファーヒストリー入力にたいするデフォルトのヒストリーリスト。
query-replaceの引数(と他のコマンドの同様の引数)にたいするヒストリーリスト。
ファイル名引数にたいするヒストリーリスト。
バッファー名引数にたいするヒストリーリスト。
正規表現引数にたいするヒストリーリスト。
拡張コマンド名引数にたいするヒストリーリスト。
シェルコマンド引数にたいするヒストリーリスト。
評価されるためのLisp式引数にたいするヒストリーリスト。
フェイス引数にたいするヒストリーリスト。
read-variableが読み取る変数名引数にたいするヒストリーリスト。
read-numberが読み取る数値にたいするヒストリーリスト。
goto-lineの引数にたいするヒストリーリスト。ユーザーオプションgoto-line-history-localをカスタマイズすれば、各バッファーにたいしてこの変数をローカルにできる。