Next: , Previous: , Up: ミニバッファー   [Contents][Index]


21.4 ミニバッファーのヒストリー

ミニバッファーヒストリーリスト(minibuffer history list)は手軽に再利用できるように以前のミニバッファー入力を記録します。ミニバッファーヒストリーリストは、(以前に入力された)文字列のリストであり、もっとも最近の文字列が先頭になります。

多数のミニバッファーが個別に存在し、異なる入力の種類に使用されます。それぞれのミニバッファー使用にたいして正しいヒストリーリストを指定するのはLispプログラマーの役目です。

ミニバッファーヒストリーリストは、read-from-minibuffercompleting-readのオプション引数historyに指定します。以下が利用できる値です:

variable

ヒストリーリストとしてvariable(シンボル)を使用する。

(variable . startpos)

ヒストリーリストとしてvariable(シンボル)を使用して、ヒストリー位置の初期値をstartpos(負の整数)とみなす。

startposに0を指定するのは、単にシンボルvariableだけを指定するのと等価である。previous-history-elementはミニバッファー内のヒストリーリストの最新の要素を表示するだろう。 正のstartposを指定すると、ミニバッファーヒストリー関数は(elt variable(1- startpos))がミニバッファー内でカレントで表示されているヒストリー要素であるかのように振る舞う。

一貫性を保つためにミニバッファー入力関数のinitial引数(入力の初期値を参照)を使用して、ミニバッファーの初期内容となるヒストリー要素も指定すべきである。

historyを指定しない場合には、デフォルトのヒストリーリストminibuffer-historyが使用されます。他の標準的なヒストリーリストについては以下を参照してください。最初に使用する前にnilに初期化するだけで、独自のヒストリーリストを作成することもできます。変数がバッファーローカルなら各バッファーが独自に入力ヒストリーリストを所有することになります。

read-from-minibuffercompleting-readは、どちらも新たな要素を自動的にヒストリーリストに追加して、ユーザーがそのリストのアイテムを再使用するためのコマンドを提供します(ミニバッファーのコマンドを参照)。ヒストリーリストを使用するためにプログラムが行う必要があるのはリストの初期化と、使用するときに入力関数にリストの名前を渡すだけです。しかしミニバッファー入力関数がリストを使用していないときに手動でリストを変更しても問題はありません。

デフォルトではM-n (next-history-element, next-history-elementを参照)によってミニバッファーから入力の読み取りを開始したコマンドが提供デフォルト値の終端に達すると、minibuffer-completion-table (補完を行うミニバッファーコマンドを参照)で指定されている補完候補すべてがデフォルトのリストに追加されるので、これらの候補がすべて“未来のヒストリー(future history)”として利用できます。あなたのプログラムは変数minibuffer-default-add-functionを通じてこれを制御することができます。値が関数以外ならこの自動的な追加は無効になります。またはこの変数に独自に関数をセットして一部の候補だけを、あるいは何か他の値を“未来のヒストリー”に追加することもできます。

新たな要素をヒストリーリストに追加するEmacs関数は、リストが長くなりすぎたときに古い要素の削除を行うこともできます。変数history-lengthは、ほとんどのヒストリーリストの最大長を指定する変数です。特定のヒストリーリストにたいして異なる最大長を指定するには、そのヒストリーリストのシンボルのhistory-lengthプロパティにその最大長をセットします。変数history-delete-duplicatesにはヒストリー内の重複を削除するかどうかを指定します。

Function: add-to-history history-var newelt &optional maxelt keep-all

この関数はneweltが空文字列でなければ、それを新たな要素として変数history-varに格納されたヒストリーリストに追加して、更新されたヒストリーリストをリターンする。これはmaxelthistory-lengthがが非nilなら、リストの長さをその変数の値に制限する(以下参照)。maxeltに指定できる値の意味はhistory-lengthの値と同様。history-varはレキシカル変数を参照できない。

add-to-historyは通常はhistory-delete-duplicatesが非nilならば、ヒストリーリスト内の重複メンバーを削除する。しかしkeep-allが非nilなら、それは重複を削除しないことを意味し、たとえneweltが空でもリストに追加する。

Variable: history-add-new-input

この変数の値がnilなら、ミニバッファーから読み取りを行う標準的な関数はヒストリーリストに新たな要素を追加しない。これによりLispプログラムがadd-to-historyを使用して明示的に入力ヒストリーを管理することになる。デフォルト値はt

User Option: history-length

この変数の値は、最大長を独自に指定しないすべてのヒストリーリストの最大長を指定する。値がtなら最大長がない(古い要素を削除しない)ことを意味する。ヒストリーリスト変数のシンボルのhistory-lengthプロパティが非nilなら、その特定のヒストリーリストにたいする最大長として、そのプロパティ値がこの変数をオーバーライドする。

User Option: history-delete-duplicates

この変数の値がtなら、それは新たなヒストリー要素の追加時に以前からある等しい要素が削除されることを意味する。

以下は標準的なミニバッファーヒストリーリスト変数です:

Variable: minibuffer-history

ミニバッファーヒストリー入力にたいするデフォルトのヒストリーリスト。

Variable: query-replace-history

query-replaceの引数(と他のコマンドの同様の引数)にたいするヒストリーリスト。

Variable: file-name-history

ファイル名引数にたいするヒストリーリスト。

Variable: buffer-name-history

バッファー名引数にたいするヒストリーリスト。

Variable: regexp-history

正規表現引数にたいするヒストリーリスト。

Variable: extended-command-history

拡張コマンド名引数にたいするヒストリーリスト。

Variable: shell-command-history

シェルコマンド引数にたいするヒストリーリスト。

Variable: read-expression-history

評価されるためのLisp式引数にたいするヒストリーリスト。

Variable: face-name-history

フェイス引数にたいするヒストリーリスト。

Variable: custom-variable-history

read-variableが読み取る変数名引数にたいするヒストリーリスト。

Variable: read-number-history

read-numberが読み取る数値にたいするヒストリーリスト。

Variable: goto-line-history

goto-lineの引数にたいするヒストリーリスト。ユーザーオプションgoto-line-history-localをカスタマイズすれば、各バッファーにたいしてこの変数をローカルにできる。