この節では、mode-line-format
の標準値によってモードラインのテキストに組み込まれる変数について説明します。これらの変数自体に特別な点はありません。mode-line-format
の値を変更してこれらの変数を使用すれば、他の任意の変数でもモードラインに同様の効果をもたらすことができます。しかし、Emacs
のさまざまな箇所では、これらの変数がモードラインの一部を制御することを前提に設定しています。したがって、実用上、モードラインがこれらの変数を使用することが不可欠です。また、The GNU Emacs Manual の Optional
Mode Line も参照してください。
この変数には、言語環境、バッファ符号化方式、および現在の入力メソッドに関する情報を表示するモードライン構文の値が格納されます。非ASCII文字を参照してください。
この変数には、現在のバッファが変更されているかどうかを表示するモードライン構文の値が格納されます。デフォルト値は、バッファが変更されている場合は ‘**’、変更されていない場合は ‘--’、読み取り専用の場合は ‘%%’、そして読み取り専用かつ変更されている場合は ‘%*’ となります。
この変数を変更しても、モードラインの更新が強制されることはありません。
この変数は現在のフレームを識別します。デフォルト値は、複数のフレームを表示できるウィンドウシステムを使用している場合は " " を、一度に1つのフレームしか表示しない通常の端末では "-%F " を表示します。
この変数は、ウィンドウに表示されているバッファを識別します。デフォルト値では、バッファ名が少なくとも12列になるようスペースで埋められて表示されます。
この変数はバッファ内の位置を表します。デフォルト値では、バッファの割合が表示され、オプションでバッファサイズ、行番号、および列番号も表示されます。
このオプションは mode-line-position
で使用されます。その値は、表示するバッファの割合(nil、"%o"、"%p"、"%P"、"%q"
のいずれか。%-モードライン内のコンストラクト
を参照)と、スペース埋めまたは切り捨てを行う際の幅の両方を指定します。このオプションは customize-variable 機能を用いて設定することが推奨されます。
各バッファでバッファローカルな変数 vc-mode
は、そのバッファの訪問済みファイルがバージョン管理されているか、またされている場合はどの種類であるかを記録します。その値はモードラインに表示される文字列であり、バージョン管理されていない場合は
nil となります。
この変数は、バッファのメジャーモードとマイナーモードを表示します。デフォルト値では、再帰的な編集レベル、プロセスステータスに関する情報、およびナローイングが有効かどうかも表示されます。
この変数は、現在のバッファにおける default-directory
がリモートであるかどうかを示すために使用されます。
この変数は、emacsclientフレームを識別するために使用されます。
mode-line-format 内でこの記号以降に続くものは、右寄せになります。
この変数は、コンテンツを正確に mode-line-format-right-align
に合わせて配置します。
mode-line-modesでは、以下の3つの変数が使用されています。
このバッファローカル変数には、現在のバッファのメジャーモードの「pretty」名が格納されます。各メジャーモードは、モード名がモードラインに表示されるよう、この変数を設定する必要があります。値は文字列である必要はなく、モードラインの構文で有効な任意のデータ型を使用できます(モードラインのデータ構造を参照)。モードラインでモード名を識別するための文字列を算出するには、format-mode-line を使用してください(モードラインの書式設定のエミュレーションを参照)。
このバッファローカル変数には、サブプロセスとの通信に使用されるモードにおけるプロセスステータスに関するモードライン情報が格納されています。この情報は、メジャーモード名の直後に、スペースを挟まずに表示されます。例えば、*shell* バッファにおけるこの変数の値は (":%s") であり、これによりシェルはステータスをメジャーモードと共に
‘(Shell:run)’ のように表示できます。通常、この変数の値は
nil です。
この変数はモードラインの先頭に表示されます。デフォルトでは、この構文はモードラインの冒頭に表示されますが、メモリ不足メッセージがある場合は、それが先に表示されます。
この変数はモード行の末尾に表示されます。
各種情報用のモードライン構成。デフォルトでは、global-mode-stringで指定された情報が表示されます。
line-number-mode(The GNU Emacs
ManualのOptional
Mode Lineを参照)が有効な場合に行番号を表示する形式です。形式内の‘%l’は行番号に置き換えられます。
column-number-mode(The GNU
Emacs ManualのOptional
Mode Lineを参照)が有効な場合に、列番号を表示するために使用されるフォーマットです。フォーマット内の‘%c’は0始まりの列番号に、‘%C’は1始まりの列番号に置き換えられます。
line-number-mode と column-number-mode
の両方が有効な場合に列番号を表示する際に使用される形式。‘%l’、‘%c’、および
‘%C’ の形式指定子の意味については、前述の2つの変数を参照してください。
この変数は、マイナーモードが有効であることをモードラインでどのように表示するかを指定する連想リストを保持します。minor-mode-alist の各要素は、2つの要素からなるリストである必要があります:
(minor-mode-variable mode-line-string)
より一般的に、mode-line-string は任意のモードライン構文となり得ます。minor-mode-variable の値が nil
以外である場合にのみモードラインに表示され、それ以外の場合は表示されません。これらの文字列は、連結しないようスペースで始める必要があります。慣例的に、特定のモード用の
minor-mode-variable は、そのマイナーモードが有効化された際に nil 以外の値に設定されます。
minor-mode-alist 自体はバッファローカルではありません。alist
に記載されている各変数は、そのマイナーモードを各バッファで個別に有効化できる場合、バッファローカルである必要があります。
This variable holds a mode line construct that, by default, appears in the
mode line as part of mode-line-misc-info, just
after the which-function-mode information if that
minor mode is enabled, else after mode-line-modes. Elements that are added to this
construct should normally end in a space (to ensure that consecutive global-mode-string elements display properly). For
instance, the command display-time sets global-mode-string to refer to the variable display-time-string, which holds a string containing the
time and load information.
‘%M’という構文は、global-mode-stringの値を代入します。この構文は、変数自体がmode-line-misc-infoで使用されているため、デフォルトのモードラインでは使用されません。
以下は mode-line-format
のデフォルト値を簡略化したものです。実際のデフォルト値では、テキストプロパティの追加も指定されています。
("-"
mode-line-mule-info
mode-line-modified
mode-line-frame-identification
mode-line-buffer-identification
" " mode-line-position (vc-mode vc-mode) " "
mode-line-modes
(which-function-mode ("" which-func-format "--"))
(global-mode-string ("--" global-mode-string))
"-%-")