25.3. Compilation Mode

The *compilation* buffer uses a special major mode, Compilation mode, whose main feature is to provide a convenient way to look at the source line where the error happened.

If you set the variable compilation-scroll-output to a non-nil value, then the compilation buffer always scrolls to follow output as it comes in.

C-x `

Visit the locus of the next compiler error message or grep match.


Visit the locus of the error message that point is on. This command is used in the compilation buffer.


Visit the locus of the error message that you click on.

You can visit the source for any particular error message by moving point in *compilation* to that error message and typing RET (compile-goto-error). Or click Mouse-2 on the error message; you need not switch to the *compilation* buffer first.

To parse the compiler error messages sequentially, type C-x ` (next-error). The character following the C-x is the backquote or "grave accent," not the single-quote. This command is available in all buffers, not just in *compilation*; it displays the next error message at the top of one window and source location of the error in another window.

The first time C-x ` is used after the start of a compilation, it moves to the first error's location. Subsequent uses of C-x ` advance down to subsequent errors. If you visit a specific error message with RET or Mouse-2, subsequent C-x ` commands advance from there. When C-x ` gets to the end of the buffer and finds no more error messages to visit, it fails and signals an Emacs error.

C-u C-x ` starts scanning from the beginning of the compilation buffer. This is one way to process the same set of errors again.

Compilation mode also redefines the keys SPC and DEL to scroll by screenfuls, and M-n and M-p to move to the next or previous error message. You can also use M-{ and M-} to move up or down to an error message for a different source file.

The features of Compilation mode are also available in a minor mode called Compilation Minor mode. This lets you parse error messages in any buffer, not just a normal compilation output buffer. Type M-x compilation-minor-mode to enable the minor mode. This defines the keys RET and Mouse-2, as in the Compilation major mode.

Compilation minor mode works in any buffer, as long as the contents are in a format that it understands. In an Rlogin buffer (Section 31.15.10), Compilation minor mode automatically accesses remote source files by FTP (Section 16.1).