最下部にモードラインをもつことができるのと同じように、ウィンドウは最上部にヘッダーライン(header
line)をもつことができます。ヘッダーライン機能は、それがheader-line-format
によって制御されることを除けばモードラインと同じように機能します。
すべてのバッファーにたいしてローカルなこの変数は、そのバッファーを表示するバッファーにたいしてヘッダーラインを表示する方法を指定する。この変数の値のフォーマットはmode-line-format
にたいするフォーマットと同じ(モードラインのデータ構造を参照)。この変数は通常はnil
なので、通常のバッファーはヘッダーラインをもたない。
バッファーでdisplay-line-numbers-mode
(display-line-numbers-mode in The GNU Emacs
Manualを参照)がオンになっていると、バッファーのテキストは行番号の表示に必要なスクリーンスペース分インデントされて表示されます。それとは対照的にヘッダーラインのテキストは自動的にインデントされません。ヘッダーラインに行番号が表示されることはありませんし、ヘッダーラインとその下にあるバッファーのテキストが直接関連する必要はないからです。バッファーのテキストに合わせてヘッダーラインのテキストを位置揃えする必要があるLispプログラムや、tabulated-list-mode
(Tabulated Listモードを参照)のように列形式データを表示するバッファーは、マイナーモードheader-line-indent-mode
をオンにする必要があります。
このバッファーローカルなマイナーモードはスクリーン上で表示されている行番号の幅(そのウィンドウで表示されている行番号範囲に応じて大きく異なる可能性あり)の変更を追跡して、行番号の幅が変更された際にヘッダーラインとバッファーラインのテキストを常に位置揃えさせる手段をLispプログラムに提供する。このようなLispプログラムはバッファーでこのモードをオンにして、常時テキストのインデントを確実に調節するために、header-line-format
の中でheader-line-indent
およびheader-line-indent-width
という変数を使う必要がある。
そのウィンドウで表示されているバッファーでheader-line-indent-mode
の場合には、表示中の行番号のカレント幅と同じ幅をもつ空白文字列がこの変数の値となる。空白の個数はヘッダーラインのテキストのフェイスにおいて、サイズも含めてフレームのデフォルトフォントと同じフォントが使用されている前提で計算される。この前提が成り立たない場合には、かわりに下記のheader-line-indent-width
を使うこと。これは値をヘッダーラインのテキストの先頭に追加することによって、バッファーのテキストに合わせてヘッダーラインのテキスト全体のインデントを再調整するというシンプルな状況で使用されることを意図した変数である。たとえば以下のheader-line-format
の定義では:
(setq header-line-format `("" header-line-indent ,my-header-line))
ここでmy-header-line
はヘッダーラインの実際のテキストを生成するフォーマット文字列。これによりヘッダーラインのテキストはその下にあるバッファーと同じように常にインデントされることが保証される。
そのウィンドウで表示されているバッファーでheader-line-indent-mode
の場合には、この変数の値は行番号の表示に用いられるフレームの正規文字幅単位でカレント幅を提供するよう最新に保たれる。バッファーのテキストに合わせてヘッダーラインのテキストを位置揃えするにあたり、header-line-indent
では柔軟性に欠けるような際に用いることができる。たとえばヘッダーラインでデフォルトフェイスのフォントと異なるメトリクス(訳注:
個々の文字や全体の文字の平均について様々な値を定義する測定情報のこと)のフォントを使用している場合には、frame-char-width
(フレームのフォントを参照)のリターン値にこの変数の値を乗じて表示されている行番号のピクセル幅を計算、その結果をheader-line-format
の関連する部分にピクセル単位で適用するためにディスプレイプロパティ仕様:align-to
(スペースの指定を参照)を用いてヘッダーラインのテキストの位置合わせをを行えばよい。
この関数はwindowのヘッダーラインの高さをピクセルでリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。
高さが1行しかないウィンドウがヘッダーラインを表示することは決してありません。また高さが2行しかないウィンドウは、同時にモードラインとヘッダーラインを表示できません。そのようなウィンドウがモードラインをもつ場合にはヘッダーラインは表示されません。