GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Mode-Line-Top.html ・ emacs-doc.conao3.com

24.4.3 モードライン制御の最上位レベル

モードラインの全体的な制御変数はmode-line-formatである。

ユーザーオプション: mode-line-format

この変数の値は、モードラインの内容を制御するモードライン用の構造体です。すべてのバッファにおいて、常にバッファローカルとなります。

バッファでこの変数を nil に設定すると、そのバッファにはモードラインが表示されません。(高さが1行しかないウィンドウでも、モードラインは表示されません。)

mode-line-format のデフォルト値は、mode-line-position や mode-line-modes といった他の変数の値(これらはさらに mode-name や minor-mode-alist という変数の値を組み込んでいます)を利用するように設計されています。mode-line-format 自体を変更する必要があるモードはごくわずかです。ほとんどの場合、mode-line-format が直接的または間接的に参照している変数の一部を変更するだけで十分です。

mode-line-format 自体を変更する場合、新しい値にはデフォルト値に含まれる変数をそのまま使用すべきであり(モードラインで使用される変数を参照)、その内容を重複させたり、別の形式で情報を表示したりすべきではありません。これにより、ユーザーや Lisp プログラム(display-time やメジャーモードなど)がこれらの変数を変更して行ったカスタマイズが、引き続き有効に維持されます。

Shellモードで有用と思われるmode-line-formatの仮想的な例を以下に示します(実際には、Shellモードではmode-line-formatは設定されません):

(setq mode-line-format
  (list "-"
   'mode-line-mule-info
   'mode-line-modified
   'mode-line-frame-identification
   "%b--"
   ;; Note that this is evaluated while making the list.
   ;; It makes a mode line construct which is just a string.
   (getenv "HOST")
   ":"
   'default-directory
   "   "
   'global-mode-string
   "   %[("
   '(:eval (format-time-string "%F"))
   'mode-line-process
   'minor-mode-alist
   "%n"
   ")%]--"
   '(which-function-mode ("" which-func-format "--"))
   '(line-number-mode "L%l--")
   '(column-number-mode "C%c--")
   '(-3 "%p")))

(変数 line-number-mode、column-number-mode、which-function-mode により、特定のマイナーモードが有効になります。通常どおり、これらの変数名はマイナーモードのコマンド名でもあります。)