Next: Generic Modes, Previous: Mode Hooks, Up: Major Modes [Contents][Index]
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
を呼び出すべきです。
このバッファーローカル変数は、表形式データのフォーマットを指定する。値はベクターで、ベクターの各要素はデータ列を表すリスト(name
width sort)
である。ここで
nil
の場合、その列はソートに使用できない。t
の場合は、列の文字列値を比較することによりソートされる。それ以外の場合は、tabulated-list-entries
の要素と同じ形式の2つの引数をとる、sort
にたいする述語関数(predicate
function)であること。
このバッファーローカル変数は、Tabulated Listバッファー内に表示されるエントリーを指定する。値にはリスト、または関数のいずれかであること。
値がリストの場合、各リスト要素は1つのエントリーに対応し、(id contents)
という形式であること。ここで
nil
、またはエントリーを識別するLispオブジェクト。Lispオブジェクトの場合には、エントリーを再ソートした際、カーソルは“同じ”エントリー上に留まる。比較はequal
で行われる。
tabulated-list-format
と要素数が同じベクター。ベクター要素は文字列、またはリスト。文字列の場合は、バッファーにそのまま挿入される。リスト(label
.
properties)
の場合には、labelとpropertiesを引数としてinsert-text-button
を呼び出すことにより、テキストボタンを挿入することを意味する(Making Buttonsを参照)。
これらの文字列には、改行を含めるべきではない。
それ以外の場合、値は引数なしで呼び出され上記形式のリストをリターンする関数であること。
このノーマルフックはTabulated
Listバッファーのリバートに先立ち実行される。派生モードは、tabulated-list-entries
を再計算するために、このフックに関数を追加できる。
この変数の値は、ポイント位置にエントリー(エントリーを終端する改行を含む)を挿入するために呼び出される関数である。この関数は、tabulated-list-entries
と同じ意味をもつ2つの引数idとcontentsを受け取る。デフォルト値は、エントリーをそのまま挿入する関数である。より複雑な方法によりTabulated
Listモードを使用するモードは、別の関数を指定できる。
この変数の値は、Tabulated
Listバッファーにたいするカレントのソートキーを指定する。nil
の場合、ソートは行われていない。それ以外では、(name
.
flip)
という形式の値をもつ。ここでnameはtabulated-list-format
内の列目の1つとマッチする文字列、flipが非nil
の場合は逆順でのソートを意味する。
この関数は、Tabulated
Listバッファーにたいするheader-line-format
を計算してセットし、列ヘッダー上でのクリックでソートを可能にするキーマップをヘッダー行に割り当てる。
Tabulated
Listから派生したモードは、上記の変数(特にtabulated-list-format
をセットした後のみ)をセットした後にこれを呼び出すべきである。
この関数は、カレントバッファーにエントリーを準備(populate)する。これはリスティングコマンドとして呼び出されるべきである。この関数は、バッファーを消去してtabulated-list-entries
で指定されるエントリーをtabulated-list-sort-key
にしたがってソートした後、各エントリーを挿入するためにtabulated-list-printer
で指定される関数を呼び出す。
オプション引数remember-posが非nil
の場合、この関数はカレント行でid要素を探して、もしあればすべてのエントリーを(再)挿入して、その後へそのエントリーの移動を試みる。