次: Mode Line Variables, 前: Mode Line Format, 上: Mode Line Format
モード行の内容は、バッファローカルな変数mode-line-format
に
保持されたリスト、文字列、シンボル、数から成るデータ構造で制御されます。
このデータ構造をモード行構成(mode line construct)と呼びます。
これは単純なモード行構成から再帰的に構築します。
同じデータ構造はフレームタイトル(see Frame Titles)を
構築するためにも使われます。
この変数の値は、モード行全体の書式に責任を持つモード行構成である。 この変数の値は、モード行のテキストを作るためにどの変数を使うか、 それらはモード行のどこに現れるかを制御する。
モード行構成は、定まったテキストの文字列のように単純でもかまいませんが、 普通は、テキストを作るための別の変数の使い方を指定します。 それらの変数の多くはそれ自身、それらの値として モード行構成を持つように定義されています。
mode-line-format
のデフォルト値は、
mode-name
やminor-mode-alist
などの変数の値を使います。
多くの目的には、mode-line-format
が参照するいくつかの変数を
変えるだけで十分です。
モード行構成は、リスト、シンボル、文字列のいずれかです。 その値がリストであれば、その各要素はリスト、シンボル、文字列のいずれかです。
%
記法を除いて、モード行にそのまま表示される。
`%'のうしろの10進数は、右側に空白を埋める
(つまりデータは左端に揃えられる)ときのフィールド幅を指定する。
see %-Constructs。
t
やnil
のシンボル、および、シンボルの値が空のものは
無視する。
例外が1つある:
symbolの値が文字列であると、%
記法を処理せずに
文字列をそのまま表示する。
(
string rest...)
or (
list rest...)
(
symbol then else)
nil
以外であると、
2番目の要素thenをモード行構成として再帰的に処理する。
symbolの値がnil
であると、
3番目の要素elseをモード行構成として再帰的に処理する。
elseは省略してもよいが、その場合、
symbolの値がnil
であるところの要素はモード行に表示されない。
(
width rest...)
たとえば、ウィンドウの上端より上にバッファの何割があるかを表示するには、
(-3 "%p")
のようなリストを使う。
読者がmode-line-format
自体を変更するときには、
新しい値では、デフォルト値(see Mode Line Variables)に現れる
ものと同じ変数を使い、それらの値をコピーして使ったり、
別の書式で情報を表示したりしないでください。
こうしておけば、それらの変数に対する変更を介した
ユーザーや(display-time
やメジャーモードなどの)Lispプログラムが行った
カスタマイズが効果を発揮できます。
ホスト名やデフォルトディレクトリを含んだ
shell-mode
に有用なmode-line-format
の例を示します。
(setq mode-line-format (list "-" 'mode-line-mule-info 'mode-line-modified 'mode-line-frame-identification "%b--" ;; リストを作るときに評価されることに注意 ;; 単なる文字列のモード行構成を作る (getenv "HOST") ":" 'default-directory " " 'global-mode-string " %[(" 'mode-name 'mode-line-process 'minor-mode-alist "%n" ")%]--" '(which-func-mode ("" which-func-format "--")) '(line-number-mode "L%l--") '(column-number-mode "C%c--") '(-3 . "%p") "-%-"))
(変数line-number-mode
、column-number-mode
、
which-func-mode
は特定のマイナモードをオンにする。
通常どおり、これらの変数の名前はマイナモードコマンドの名前でもある。)