26.1 Major Modes for Programming Languages
Emacs has specialized major modes (see Major Modes) for many
programming languages. A programming language mode typically
specifies the syntax of expressions, the customary rules for
indentation, how to do syntax highlighting for the language, and how
to find the beginning or end of a function definition. It often has
features for compiling and debugging programs as well. The major mode
for each language is named after the language; for instance, the major
mode for the C programming language is c-mode
.
Emacs has programming language modes for Lisp, Scheme, the
Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++,
Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, M4, Makefiles,
Metafont (TeX’s companion for font creation), Modula2, Object
Pascal, Objective-C, Octave, Pascal, Perl, Pike, PostScript, Prolog,
Python, Ruby, Simula, SQL, Tcl, Verilog, and VHDL. An alternative
mode for Perl is called CPerl mode. Modes are also available for the
scripting languages of the common GNU and Unix shells, and
MS-DOS/MS-Windows ‘ BAT
’ files, and for makefiles, DNS master
files, and various sorts of configuration files.
Ideally, Emacs should have a major mode for each programming language that you might want to edit. If it doesn’t have a mode for your favorite language, the mode might be implemented in a package not distributed with Emacs (see Emacs Lisp Packages); or you can contribute one.
In most programming languages, indentation should vary from line to
line to illustrate the structure of the program. Therefore, in most
programming language modes, typing TAB
updates the
indentation of the current line (see Indentation for Programs).
Furthermore, DEL
is usually bound to
backward-delete-char-untabify
, which deletes backward treating
each tab as if it were the equivalent number of spaces, so that you
can delete one column of indentation without worrying whether the
whitespace consists of spaces or tabs.
Entering a programming language mode runs the custom Lisp functions
specified in the hook variable prog-mode-hook
, followed by
those specified in the mode’s own mode hook (see Major Modes).
For instance, entering C mode runs the hooks prog-mode-hook
and
c-mode-hook
. See Hooks, for information about hooks.
Separate manuals are available for the modes for Ada (see Ada Mode in Ada Mode), C/C++/Objective C/Java/Corba IDL/Pike/AWK (see CC Mode in CC Mode), Octave, VHDL, and IDLWAVE (see IDLWAVE in IDLWAVE User Manual).