123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- @node Major Modes, Indentation, Mule, Top
- @chapter Major Modes
- @cindex major modes
- @kindex TAB
- @kindex DEL
- @kindex LFD
- Emacs has many different @dfn{major modes}, each of which customizes
- Emacs for editing text of a particular sort. The major modes are mutually
- exclusive; at any time, each buffer has one major mode. The mode line
- normally contains the name of the current major mode in parentheses.
- @xref{Mode Line}.
- The least specialized major mode is called @dfn{Fundamental mode}. This
- mode has no mode-specific redefinitions or variable settings. Each
- Emacs command behaves in its most general manner, and each option is in its
- default state. For editing any specific type of text, such as Lisp code or
- English text, you should switch to the appropriate major mode, such as Lisp
- mode or Text mode.
- Selecting a major mode changes the meanings of a few keys to become
- more specifically adapted to the language being edited. @key{TAB},
- @key{DEL}, and @key{LFD} are changed frequently. In addition, commands
- which handle comments use the mode to determine how to delimit comments.
- Many major modes redefine the syntactical properties of characters
- appearing in the buffer. @xref{Syntax}.
- The major modes fall into three major groups. Lisp mode (which has
- several variants), C mode, and Muddle mode are for specific programming
- languages. Text mode, Nroff mode, @TeX{} mode, and Outline mode are for
- editing English text. The remaining major modes are not intended for use
- on users' files; they are used in buffers created by Emacs for specific
- purposes and include Dired mode for buffers made by Dired (@pxref{Dired}),
- Mail mode for buffers made by @kbd{C-x m} (@pxref{Sending Mail}), and Shell
- mode for buffers used for communicating with an inferior shell process
- (@pxref{Interactive Shell}).
- Most programming language major modes specify that only blank lines
- separate paragraphs. This is so that the paragraph commands remain useful.
- @xref{Paragraphs}. They also cause Auto Fill mode to use the definition of
- @key{TAB} to indent the new lines it creates. This is because most lines
- in a program are usually indented. @xref{Indentation}.
- @menu
- * Choosing Modes:: How major modes are specified or chosen.
- @end menu
- @node Choosing Modes,,Major Modes,Major Modes
- @section Choosing Major Modes
- You can select a major mode explicitly for the current buffer, but
- most of the time Emacs determines which mode to use based on the file
- name or some text in the file.
- Use a @kbd{M-x} command to explicitly select a new major mode. Add
- @code{-mode} to the name of a major mode to get the name of a command to
- select that mode. For example, to enter Lisp mode, execute @kbd{M-x
- lisp-mode}.
- @vindex auto-mode-alist
- When you visit a file, Emacs usually chooses the right major mode
- based on the file's name. For example, files whose names end in
- @code{.c} are edited in C mode. The variable @code{auto-mode-alist}
- controls the correspondence between file names and major mode. Its value
- is a list in which each element has the form:
- @example
- (@var{regexp} . @var{mode-function})
- @end example
- @noindent
- For example, one element normally found in the list has the form
- @code{(@t{"\\.c$"} . c-mode)}. It is responsible for selecting C mode
- for files whose names end in @file{.c}. (Note that @samp{\\} is needed in
- Lisp syntax to include a @samp{\} in the string, which is needed to
- suppress the special meaning of @samp{.} in regexps.) The only practical
- way to change this variable is with Lisp code.
- You can specify which major mode should be used for editing a certain
- file by a special sort of text in the first non-blank line of the file.
- The mode name should appear in this line both preceded and followed by
- @samp{-*-}. Other text may appear on the line as well. For example,
- @example
- ;-*-Lisp-*-
- @end example
- @noindent
- tells Emacs to use Lisp mode. Note how the semicolon is used to make Lisp
- treat this line as a comment. Such an explicit specification overrides any
- default mode based on the file name.
- Another format of mode specification is:
- @example
- -*-Mode: @var{modename};-*-
- @end example
- @noindent
- which allows other things besides the major mode name to be specified.
- However, Emacs does not look for anything except the mode name.
- The major mode can also be specified in a local variables list.
- @xref{File Variables}.
- @vindex default-major-mode
- When you visit a file that does not specify a major mode to use, or
- when you create a new buffer with @kbd{C-x b}, Emacs uses the major mode
- specified by the variable @code{default-major-mode}. Normally this
- value is the symbol @code{fundamental-mode}, which specifies Fundamental
- mode. If @code{default-major-mode} is @code{nil}, the major mode is
- taken from the previously selected buffer.
|