1.3 The Mode Line
Each text window's last line is a mode line, which describes
what is going on in that window. When there is only one text window,
the mode line appears right above the echo area; it is the
next-to-last line in the frame. The mode line starts and ends with
dashes. On a text-mode display, the mode line is in inverse video if
the terminal supports that; on a graphics display, the mode line has a
3D box appearance to help it stand out. The mode line of the
selected window has a slightly different appearance than those of
other windows; see Optional Mode Line, for more about this.
Normally, the mode line looks like this:
-cs:ch buf pos line (major minor)------
This gives information about the buffer being displayed in the window: the
buffer's name, what major and minor modes are in use, whether the buffer's
text has been changed, and how far down the buffer you are currently
looking.
ch contains two stars ‘**’ if the text in the buffer has
been edited (the buffer is “modified”), or ‘--’ if the buffer has
not been edited. For a read-only buffer, it is ‘%*’ if the buffer
is modified, and ‘%%’ otherwise.
buf is the name of the window's buffer. In most cases
this is the same as the name of a file you are editing. See Buffers.
The buffer displayed in the selected window (the window that the
cursor is in) is also Emacs's current buffer, the one that editing
takes place in. When we speak of what some command does to “the
buffer,” we are talking about the current buffer.
pos tells you whether there is additional text above the top of
the window, or below the bottom. If your buffer is small and it is all
visible in the window, pos is ‘All’. Otherwise, it is
‘Top’ if you are looking at the beginning of the buffer, ‘Bot’
if you are looking at the end of the buffer, or ‘nn%’, where
nn is the percentage of the buffer above the top of the window.
With Size Indication mode, you can display the size of the buffer as
well. See Optional Mode Line.
line is ‘L’ followed by the current line number of point.
This is present when Line Number mode is enabled (which it normally is).
You can optionally display the current column number too, by turning on
Column Number mode (which is not enabled by default because it is
somewhat slower). See Optional Mode Line.
major is the name of the major mode in effect in the
buffer. At any time, each buffer is in one and only one of the possible
major modes. The major modes available include Fundamental mode (the
least specialized), Text mode, Lisp mode, C mode, Texinfo mode, and many
others. See Major Modes, for details of how the modes differ and how
to select one.
Some major modes display additional information after the major mode
name. For example, Rmail buffers display the current message number and
the total number of messages. Compilation buffers and Shell buffers
display the status of the subprocess.
minor is a list of some of the minor modes that are turned
on at the moment in the window's chosen buffer. For example,
‘Fill’ means that Auto Fill mode is on. ‘Abbrev’ means that
Word Abbrev mode is on. ‘Ovwrt’ means that Overwrite mode is on.
See Minor Modes, for more information. ‘Narrow’ means that the
buffer being displayed has editing restricted to only a portion of its
text. This is not really a minor mode, but is like one.
See Narrowing. ‘Def’ means that a keyboard macro is being
defined. See Keyboard Macros.
In addition, if Emacs is currently inside a recursive editing level,
square brackets (‘[...]’) appear around the parentheses that
surround the modes. If Emacs is in one recursive editing level within
another, double square brackets appear, and so on. Since recursive
editing levels affect Emacs globally, not just one buffer, the square
brackets appear in every window's mode line or not in any of them.
See Recursive Edit.
Non-windowing terminals can only show a single Emacs frame at a time
(see Frames). On such terminals, the mode line displays the name of
the selected frame, after ch. The initial frame's name is
‘F1’.
cs states the coding system used for the file you are editing.
A dash indicates the default state of affairs: no code conversion,
except for end-of-line translation if the file contents call for that.
‘=’ means no conversion whatsoever. Nontrivial code conversions
are represented by various letters—for example, ‘1’ refers to ISO
Latin-1. See Coding Systems, for more information. If you are using
an input method, a string of the form ‘i>’ is added to the
beginning of cs; i identifies the input method. (Some input
methods show ‘+’ or ‘@’ instead of ‘>’.) See Input Methods.
When you are using a character-only terminal (not a window system),
cs uses three characters to describe, respectively, the coding
system for keyboard input, the coding system for terminal output, and
the coding system used for the file you are editing.
When multibyte characters are not enabled, cs does not appear at
all. See Enabling Multibyte.
The colon after cs can change to another string in certain
circumstances. Emacs uses newline characters to separate lines in the buffer.
Some files use different conventions for separating lines: either
carriage-return linefeed (the MS-DOS convention) or just carriage-return
(the Macintosh convention). If the buffer's file uses carriage-return
linefeed, the colon changes to either a backslash (‘\’) or
‘(DOS)’, depending on the operating system. If the file uses just
carriage-return, the colon indicator changes to either a forward slash
(‘/’) or ‘(Mac)’. On some systems, Emacs displays
‘(Unix)’ instead of the colon even for files that use newline to
separate lines.
You can customize the mode line display for each of the end-of-line
formats by setting each of the variables eol-mnemonic-unix
,
eol-mnemonic-dos
, eol-mnemonic-mac
, and
eol-mnemonic-undecided
to any string you find appropriate.
See Variables, for an explanation of how to set variables.
See Optional Mode Line, for features that add other handy
information to the mode line, such as the size of the buffer, the
current column number of point, the current time, and whether new mail
for you has arrived.
The mode line is mouse-sensitive; when you move the mouse across
various parts of it, Emacs displays help text to say what a click in
that place will do. See Mode Line Mouse.