Mercurial > hg > xemacs-beta
diff man/xemacs/major.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | e45d5e7c476e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/xemacs/major.texi Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,113 @@ + +@node Major Modes, Indentation, Windows, 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.