elisp: Mode Line Variables
22.4.4 Variables Used in the Mode Line
--------------------------------------
This section describes variables incorporated by the standard value of
‘mode-line-format’ into the text of the mode line. There is nothing
inherently special about these variables; any other variables could have
the same effects on the mode line if the value of ‘mode-line-format’ is
changed to use them. However, various parts of Emacs set these
variables on the understanding that they will control parts of the mode
line; therefore, practically speaking, it is essential for the mode line
to use them. Also see (emacs)Optional Mode Line.
-- Variable: mode-line-mule-info
This variable holds the value of the mode line construct that
displays information about the language environment, buffer coding
system, and current input method. Non-ASCII Characters.
-- Variable: mode-line-modified
This variable holds the value of the mode line construct that
displays whether the current buffer is modified. Its default value
displays ‘**’ if the buffer is modified, ‘--’ if the buffer is not
modified, ‘%%’ if the buffer is read only, and ‘%*’ if the buffer
is read only and modified.
Changing this variable does not force an update of the mode line.
-- Variable: mode-line-frame-identification
This variable identifies the current frame. Its default value
displays ‘" "’ if you are using a window system which can show
multiple frames, or ‘"-%F "’ on an ordinary terminal which shows
only one frame at a time.
-- Variable: mode-line-buffer-identification
This variable identifies the buffer being displayed in the window.
Its default value displays the buffer name, padded with spaces to
at least 12 columns.
-- Variable: mode-line-position
This variable indicates the position in the buffer. Its default
value displays the buffer percentage and, optionally, the buffer
size, the line number and the column number.
-- Variable: vc-mode
The variable ‘vc-mode’, buffer-local in each buffer, records
whether the buffer’s visited file is maintained with version
control, and, if so, which kind. Its value is a string that
appears in the mode line, or ‘nil’ for no version control.
-- Variable: mode-line-modes
This variable displays the buffer’s major and minor modes. Its
default value also displays the recursive editing level,
information on the process status, and whether narrowing is in
effect.
-- Variable: mode-line-remote
This variable is used to show whether ‘default-directory’ for the
current buffer is remote.
-- Variable: mode-line-client
This variable is used to identify ‘emacsclient’ frames.
The following three variables are used in ‘mode-line-modes’:
-- Variable: mode-name
This buffer-local variable holds the “pretty” name of the current
buffer’s major mode. Each major mode should set this variable so
that the mode name will appear in the mode line. The value does
not have to be a string, but can use any of the data types valid in
a mode-line construct (Mode Line Data). To compute the
string that will identify the mode name in the mode line, use
‘format-mode-line’ (Emulating Mode Line).
-- Variable: mode-line-process
This buffer-local variable contains the mode line information on
process status in modes used for communicating with subprocesses.
It is displayed immediately following the major mode name, with no
intervening space. For example, its value in the ‘*shell*’ buffer
is ‘(":%s")’, which allows the shell to display its status along
with the major mode as: ‘(Shell:run)’. Normally this variable is
‘nil’.
-- Variable: mode-line-front-space
This variable is displayed at the front of the mode line. By
default, this construct is displayed right at the beginning of the
mode line, except that if there is a memory-full message, it is
displayed first.
-- Variable: mode-line-end-spaces
This variable is displayed at the end of the mode line.
-- Variable: mode-line-misc-info
Mode line construct for miscellaneous information. By default,
this shows the information specified by ‘global-mode-string’.
-- Variable: minor-mode-alist
This variable holds an association list whose elements specify how
the mode line should indicate that a minor mode is active. Each
element of the ‘minor-mode-alist’ should be a two-element list:
(MINOR-MODE-VARIABLE MODE-LINE-STRING)
More generally, MODE-LINE-STRING can be any mode line construct.
It appears in the mode line when the value of MINOR-MODE-VARIABLE
is non-‘nil’, and not otherwise. These strings should begin with
spaces so that they don’t run together. Conventionally, the
MINOR-MODE-VARIABLE for a specific mode is set to a non-‘nil’ value
when that minor mode is activated.
‘minor-mode-alist’ itself is not buffer-local. Each variable
mentioned in the alist should be buffer-local if its minor mode can
be enabled separately in each buffer.
-- Variable: global-mode-string
This variable holds a mode line construct that, by default, appears
in the mode line just after the ‘which-func-mode’ minor mode if
set, else after ‘mode-line-modes’. 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.
The ‘%M’ construct substitutes the value of ‘global-mode-string’,
but that is obsolete, since the variable is included in the mode
line from ‘mode-line-format’.
Here is a simplified version of the default value of
‘mode-line-format’. The real default value also specifies addition of
text properties.
("-"
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-func-mode ("" which-func-format "--"))
(global-mode-string ("--" global-mode-string))
"-%-")