Next: Mode Line Top, Previous: Mode Line Basics, Up: Mode Line Format [Contents][Index]
モードラインのコンテンツは、モードライン構成(mode line construct)と呼ばれるデータ構造により制御されます。モードライン構成はリスト、シンボル、数字を保持するバッファーローカル変数により構成されます。それぞれのデータ型は、以下で説明するようにモードラインの外見にたいして特別な意味をもちます。フレームタイトル(Frame Titlesを参照)とヘッダーライン(Header Linesを参照)にたいしても、同じデータ構造が使用されます。
固定文字列のようにシンプルなモードライン構成の場合もありますが、通常はモードライン構成のテキストを構築するために、固定文字列と変数の値を組み合わせる方法を指定します。これらの変数の多くは、その変数自体がその値によりモードライン構成を定義する変数です。
以下は、モードライン構成における、さまざまなデータ型の意味です:
stringモードライン構成においての文字列は、文字列内に%構成(%-constructs)を含む以外は、そのまま表現される。これらは、他のデータによる置換を意味する。%-Constructsを参照のこと。
文字列の一部がfaceプロパティをもつ場合は、バッファー内でそれらが表示されるときと同じように、テキスト表示を制御する。faceプロパティをもたない文字は、デフォルトのフェイスmode-line、またはmode-line-inactiveで表示される(Standard
Faces in The GNU Emacs
Manualを参照)。string内のhelp-echoプロパティとkeymapプロパティは、特別な意味をもつ。Properties in Modeを参照のこと。
symbolモードライン構成においてのシンボルは、その値を意味する。モードライン構成としては、symbolの値はsymbolの位置に使用される。しかし、シンボルtとnilは、値がvoidであるようなシンボルとして無視される。
例外が1つある。symbolの値が文字列の場合、それはそのまま表示され、%構成は認識されない。
symbolが“危険”とマークされていない(非nilのrisky-local-variableプロパティをもつ)場合は、symbolの値中で指定されたテキストプロパティはすべて無視される。これには、symbolの値中の文字列のテキストプロパティ、同様に文字列内の:evalフォームと:propertizeフォームがすべて含まれる。(これはセキュリティー上の理由による。危険とマークされていない変数は、ユーザーへの問い合わせなしでファイル変数から自動的にセットされ得る。)
(string rest…)(list rest…)最初の要素が文字列またはリストであるようなリストは、すべての要素を再帰的に処理して、その結果を結合することを意味する。これは、モードライン構成において、もっとも一般的なフォームである。
(:eval form)最初の要素がシンボル:evalであるようなリストは、formを評価して、その結果を表示する文字列として使用するよう指示する。この評価がファイルをロードできないことを確認すること。ファイルをロードすると、無限再帰が発生するかもしれない。
(:propertize elt props…)最初の要素がシンボル:propertizeであるようなリストは、モードライン構成eltを再帰的に処理して、propsにより指定されるテキストプロパティに結果を加えるよう指示する。引数propsは、0個以上のtext-propertyとvalueのペアーで構成されるべきである。
(symbol then else)最初の要素がキーワード以外のシンボルであるようなリストは、条件文を指定する。その意味は、symbolの値に依存する。symbolが非nil値をもつ場合は、モードライン構成として、2つ目の要素thenが再帰的に処理され、それ以外は3つ目の要素elseが再帰的に処理される。elseは省略でき、その場合symbolの値がnilかvoidならば、モードライン構成は何も表示しない。
(width rest…)最初の要素が整数であるようなリストは、restの結果の切り詰め、またはパディングを指定する。残りの要素restは、モードライン構成として再帰的に処理され、互いに結合される。widthが正の場合、結果の幅がwidthより少ないときは、右側にスペースがパディングされる。widthが負の場合、結果の幅が-widthより大きいときは、右側が切り詰められる。
たとえば、ウィンドウ最上部からのバッファー位置をパーセント表示するには、(-3 "%p")のようなリストを使用すればよい。