Next: , Previous: , Up: Major Modes   [Contents][Index]


22.2.7 Tabulated List mode

Tabulated Listモードとは、表形式データ(エントリーから構成されるデータであり、各エントリーはそれぞれテキストの1行を占め、エントリーの内容は列に分割されるようなデータ)を表示するためのメジャーモードです。Tabulated Listモードは、行列の見栄えよくプリントする機能、および各列の値に応じて行をソートする機能を提供します。これは、Specialモードから派生されたモードです(Basic Major Modesを参照)。

Tabulated Listモードは、より特化したメジャーモードの親モードとして使用されることを意図しています。例としては、Process Menuモード(Process Informationを参照)や、Package Menuモード(Package Menu in The GNU Emacs Manualを参照)が含まれます。

このような派生されたモードは、tabulated-list-modeを2つ目の引数に指定して、通常の方法でdefine-derived-modeを使用するべきです(Derived Modesを参照)。define-derived-modeフォームのbodyは、以下にドキュメントされている変数に値を割り当てることにより、表形式データのフォーマットを指定するべきです。その後、ヘッダー行を初期化するために関数tabulated-list-init-headerを呼び出すべきです。

派生されたモードは、リスティングコマンドも定義するべきです。これはモードコマンドではなく、(M-x list-processesのように)ユーザーが呼び出すコマンドです。リスティングコマンドは、バッファーを作成または切り替えて、派生モードをオンにして、表形式データを指定し、最後にそのバッファーを事前設定(populate)するためにtabulated-list-printを呼び出すべきです。

Variable: tabulated-list-format

このバッファーローカル変数は、表形式データのフォーマットを指定する。値はベクターで、ベクターの各要素はデータ列を表すリスト(name width sort)である。ここで

Variable: tabulated-list-entries

このバッファーローカル変数は、Tabulated Listバッファー内に表示されるエントリーを指定する。値にはリスト、または関数のいずれかであること。

値がリストの場合、各リスト要素は1つのエントリーに対応し、(id contents)という形式であること。ここで

それ以外の場合、値は引数なしで呼び出され上記形式のリストをリターンする関数であること。

Variable: tabulated-list-revert-hook

このノーマルフックはTabulated Listバッファーのリバートに先立ち実行される。派生モードは、tabulated-list-entriesを再計算するために、このフックに関数を追加できる。

Variable: tabulated-list-printer

この変数の値は、ポイント位置にエントリー(エントリーを終端する改行を含む)を挿入するために呼び出される関数である。この関数は、tabulated-list-entriesと同じ意味をもつ2つの引数idcontentsを受け取る。デフォルト値は、エントリーをそのまま挿入する関数である。より複雑な方法によりTabulated Listモードを使用するモードは、別の関数を指定できる。

Variable: tabulated-list-sort-key

この変数の値は、Tabulated Listバッファーにたいするカレントのソートキーを指定する。nilの場合、ソートは行われていない。それ以外では、(name . flip)という形式の値をもつ。ここでnametabulated-list-format内の列目の1つとマッチする文字列、flipが非nilの場合は逆順でのソートを意味する。

Function: tabulated-list-init-header

この関数は、Tabulated Listバッファーにたいするheader-line-formatを計算してセットし、列ヘッダー上でのクリックでソートを可能にするキーマップをヘッダー行に割り当てる。

Tabulated Listから派生したモードは、上記の変数(特にtabulated-list-formatをセットした後のみ)をセットした後にこれを呼び出すべきである。

Function: tabulated-list-print &optional remember-pos

この関数は、カレントバッファーにエントリーを準備(populate)する。これはリスティングコマンドとして呼び出されるべきである。この関数は、バッファーを消去してtabulated-list-entriesで指定されるエントリーをtabulated-list-sort-keyにしたがってソートした後、各エントリーを挿入するためにtabulated-list-printerで指定される関数を呼び出す。

オプション引数remember-posが非nilの場合、この関数はカレント行でid要素を探して、もしあればすべてのエントリーを(再)挿入して、その後へそのエントリーの移動を試みる。