Next: , Previous: Echo Area, Up: Screen


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.