]> code.delx.au - gnu-emacs/commitdiff
Move Minor Modes node of Emacs manual next to the Major Modes node
authorChong Yidong <cyd@stupidchicken.com>
Sun, 10 Jul 2011 04:05:33 +0000 (00:05 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 10 Jul 2011 04:05:33 +0000 (00:05 -0400)
and out of the Customizations chapter.

* doc/emacs/modes.texi: Rename from major.texi.
(Modes): New node.  Make Major Modes and Minor Modes subsections
of this.  All callers changed.

* doc/emacs/custom.texi (Minor Modes): Move to modes.texi.

doc/emacs/ChangeLog
doc/emacs/Makefile.in
doc/emacs/custom.texi
doc/emacs/emacs.texi
doc/emacs/indent.texi
doc/emacs/major.texi [deleted file]
doc/emacs/modes.texi [new file with mode: 0644]
doc/emacs/mule.texi

index 1b2588fec58b844938324a3c42e2382e035522f6..6bc8c7312db9eea53a6e40d59404e5d22487fed5 100644 (file)
@@ -1,3 +1,11 @@
+2011-07-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * modes.texi: Rename from major.texi.
+       (Modes): New node.  Make Major Modes and Minor Modes subsections
+       of this.  All callers changed.
+
+       * custom.texi (Minor Modes): Move to modes.texi.
+
 2011-07-10  Chong Yidong  <cyd@stupidchicken.com>
 
        * custom.texi (Syntax): Node deleted.
index aca17ce817d5c41d67e206b5a153694c86452a2a..9465c726ebad97a397d72d64ef3c528f506211a9 100644 (file)
@@ -84,7 +84,7 @@ EMACSSOURCES= \
        ${srcdir}/windows.texi \
        ${srcdir}/frames.texi \
        ${srcdir}/mule.texi \
-       ${srcdir}/major.texi \
+       ${srcdir}/modes.texi \
        ${srcdir}/indent.texi \
        ${srcdir}/text.texi \
        ${srcdir}/programs.texi \
index 4ecbb0c42cc160a06dda0b5f496fb7d28ab537a8..8465dd93519c2f7e364810235ed4db938a1c0b81 100644 (file)
@@ -23,8 +23,6 @@ Reference Manual}.
 @end ifnottex
 
 @menu
-* Minor Modes::         Each minor mode is a feature you can turn on
-                          independently of any others.
 * Easy Customization::  Convenient way to browse and change settings.
 * Variables::           Many Emacs commands examine Emacs variables
                           to decide what to do; by setting variables,
@@ -35,155 +33,6 @@ Reference Manual}.
                           @file{.emacs} file.
 @end menu
 
-@node Minor Modes
-@section Minor Modes
-@cindex minor modes
-@cindex mode, minor
-
-  Minor modes are optional features which you can turn on or off.  For
-example, Auto Fill mode is a minor mode in which @key{SPC} breaks
-lines between words as you type.  Minor modes are independent of one
-another and of the selected major mode.  Most minor modes say in the
-mode line when they are enabled; for example, @samp{Fill} in the mode
-line means that Auto Fill mode is enabled.
-
-  Each minor mode is associated with a command, called the @dfn{mode
-command}, which turns it on or off.  The name of this command consists
-of the name of the minor mode, followed by @samp{-mode}; for instance,
-the mode command for Auto Fill mode is @code{auto-fill-mode}.  Calling
-the minor mode command with no prefix argument @dfn{toggles} the mode,
-turning it on if it was off, and off if it was on.  A positive
-argument always turns the mode on, and a zero or negative argument
-always turns it off.  Mode commands are usually invoked with
-@kbd{M-x}, but you can bind keys to them if you wish (@pxref{Key
-Bindings}).
-
-  Most minor modes also have a @dfn{mode variable}, with the same name
-as the mode command.  Its value is non-@code{nil} if the mode is
-enabled, and @code{nil} if it is disabled.  In some minor modes---but
-not all---the value of the variable alone determines whether the mode
-is active: the mode command works simply by setting the variable, and
-changing the value of the variable has the same effect as calling the
-mode command.  Because not all minor modes work this way, we recommend
-that you avoid changing the mode variables directly; use the mode
-commands instead.
-
-  Some minor modes are @dfn{buffer-local}: they apply only to the
-current buffer, so you can enable the mode in certain buffers and not
-others.  Other minor modes are @dfn{global}: while enabled, they
-affect everything you do in the Emacs session, in all buffers.  Some
-global minor modes are enabled by default.
-
-  The following is a list of some buffer-local minor modes:
-
-@itemize @bullet
-@item
-Abbrev mode automatically expands text based on pre-defined
-abbreviation definitions.  @xref{Abbrevs}.
-
-@item
-Auto Fill mode inserts newlines as you type to prevent lines from
-becoming too long.  @xref{Filling}.
-
-@item
-Auto Save mode saves the buffer contents periodically to reduce the
-amount of work you can lose in case of a crash.  @xref{Auto Save}.
-
-@item
-Enriched mode enables editing and saving of formatted text.
-@xref{Formatted Text}.
-
-@item
-Flyspell mode automatically highlights misspelled words.
-@xref{Spelling}.
-
-@item
-Font-Lock mode automatically highlights certain textual units found in
-programs.  It is enabled globally by default, but you can disable it
-in individual buffers.  @xref{Faces}.
-
-@findex linum-mode
-@cindex Linum mode
-@item
-Linum mode displays each line's line number in the window's left
-margin.  Its mode command is @code{linum-mode}.
-
-@item
-Outline minor mode provides similar facilities to the major mode
-called Outline mode.  @xref{Outline Mode}.
-
-@cindex Overwrite mode
-@cindex mode, Overwrite
-@findex overwrite-mode
-@kindex INSERT
-@item
-Overwrite mode causes ordinary printing characters to replace existing
-text instead of shoving it to the right.  For example, if point is in
-front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing
-a @kbd{G} changes it to @samp{FOOGAR}, instead of producing
-@samp{FOOGBAR} as usual.  In Overwrite mode, the command @kbd{C-q}
-inserts the next character whatever it may be, even if it is a
-digit---this gives you a way to insert a character instead of
-replacing an existing character.  The mode command,
-@code{overwrite-mode}, is bound to the @key{Insert} key.
-
-@findex binary-overwrite-mode
-@item
-Binary Overwrite mode is a variant of Overwrite mode for editing
-binary files; it treats newlines and tabs like other characters, so
-that they overwrite other characters and can be overwritten by them.
-In Binary Overwrite mode, digits after @kbd{C-q} specify an octal
-character code, as usual.
-
-@item
-Visual Line mode performs ``word wrapping'', causing long lines to be
-wrapped at word boundaries.  @xref{Visual Line Mode}.
-@end itemize
-
-  Here are some useful global minor modes.  Since Line Number mode and
-Transient Mark mode can be enabled or disabled just by setting the
-value of the minor mode variable, you @emph{can} set them differently
-for particular buffers, by explicitly making the corresponding
-variable local in those buffers.  @xref{Locals}.
-
-@itemize @bullet
-@item
-Column Number mode enables display of the current column number in the
-mode line.  @xref{Mode Line}.
-
-@item
-Delete Selection mode causes text insertion to first delete the text
-in the region, if the region is active.  @xref{Using Region}.
-
-@item
-Icomplete mode displays an indication of available completions when
-you are in the minibuffer and completion is active.  @xref{Completion
-Options}.
-
-@item
-Line Number mode enables display of the current line number in the
-mode line.  It is enabled by default.  @xref{Mode Line}.
-
-@item
-Menu Bar mode gives each frame a menu bar.  It is enabled by default.
-@xref{Menu Bars}.
-
-@item
-Scroll Bar mode gives each window a scroll bar.  It is enabled by
-default, but the scroll bar is only displayed on graphical terminals.
-@xref{Scroll Bars}.
-
-@item
-Tool Bar mode gives each frame a tool bar.  It is enabled by default,
-but the tool bar is only displayed on graphical terminals.  @xref{Tool
-Bars}.
-
-@item
-Transient Mark mode highlights the region, and makes many Emacs
-commands operate on the region when the mark is active.  It is enabled
-by default.  @xref{Mark}.
-@end itemize
-
 @node Easy Customization
 @section Easy Customization Interface
 
index c0f1712bada9c3bf263b37ef40627f3ea8a83b91..902de8318b85ca119362382f9630c1756da834e8 100644 (file)
@@ -184,7 +184,7 @@ Major Structures of Emacs
 * International::       Using non-@acronym{ASCII} character sets.
 
 Advanced Features
-* Major Modes::         Text mode vs. Lisp mode vs. C mode...
+* Modes::               Major and minor modes alter Emacs' basic behavior.
 * Indentation::         Editing the white space at the beginnings of lines.
 * Text::                Commands and modes for editing English.
 * Programs::            Commands and modes for editing programs.
@@ -549,9 +549,12 @@ International Character Set Support
                               to use without multibyte characters.
 * Charsets::                How Emacs groups its internal character codes.
 
-Major Modes
+Modes
 
-* Choosing Modes::      How major modes are specified or chosen.
+* Major Modes::         Text mode vs. Lisp mode vs. C mode...
+* Minor Modes::         Each minor mode is a feature you can turn on
+                          independently of any others.
+* Choosing Modes::      How modes are chosen when visiting files.
 
 Indentation
 
@@ -1058,8 +1061,6 @@ Hyperlinking and Navigation Features
 
 Customization
 
-* Minor Modes::         Each minor mode is a feature you can turn on
-                          independently of any others.
 * Easy Customization::  Convenient way to browse and change settings.
 * Variables::           Many Emacs commands examine Emacs variables
                           to decide what to do; by setting variables,
@@ -1485,7 +1486,7 @@ Lisp programming.
 @include windows.texi
 @include frames.texi
 @include mule.texi
-@include major.texi
+@include modes.texi
 @include indent.texi
 @include text.texi
 @c Includes fortran-xtra.
index c4ef4781aafa05ff3ffc2a1eee2618daaf31af95..e13b2808f09d1b691e9d800150cc7733d7b4b1ea 100644 (file)
@@ -2,7 +2,7 @@
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
 @c   Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
-@node Indentation, Text, Major Modes, Top
+@node Indentation, Text, Modes, Top
 @chapter Indentation
 @cindex indentation
 @cindex tabs
diff --git a/doc/emacs/major.texi b/doc/emacs/major.texi
deleted file mode 100644 (file)
index ff73e56..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-@c This is part of the Emacs manual.
-@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
-@c   Free Software Foundation, Inc.
-@c See file emacs.texi for copying conditions.
-@node Major Modes, Indentation, International, Top
-@chapter Major Modes
-@cindex major modes
-@cindex mode, major
-@kindex TAB @r{(and major modes)}
-@kindex DEL @r{(and major modes)}
-@kindex C-j @r{(and major modes)}
-
-  Emacs provides many alternative @dfn{major modes}, each of which
-customizes Emacs for editing text of a particular sort.  The major modes
-are mutually exclusive, and each buffer has one major mode at any time.
-The mode line normally shows the name of the current major mode, in
-parentheses (@pxref{Mode Line}).
-
-  The least specialized major mode is called @dfn{Fundamental mode}.
-This mode has no mode-specific redefinitions or variable settings, so
-that each Emacs command behaves in its most general manner, and each
-user option variable is in its default state.  For editing text of a
-specific type that Emacs knows about, 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.  The ones that
-are changed frequently are @key{TAB}, @key{DEL}, and @kbd{C-j}.  The
-prefix key @kbd{C-c} normally contains mode-specific commands.  In
-addition, the commands which handle comments use the mode to determine
-how comments are to be delimited.  Many major modes redefine the
-syntactical properties of characters appearing in the buffer.
-
-  The major modes fall into three major groups.  The first group
-contains modes for normal text, either plain or with mark-up.  It
-includes Text mode, HTML mode, SGML mode, @TeX{} mode and Outline
-mode.  The second group contains modes for specific programming
-languages.  These include Lisp mode (which has several variants), C
-mode, Fortran mode, and others.  The remaining major modes are not
-intended for use on users' files; they are used in buffers created for
-specific purposes by Emacs, such as Dired mode for buffers made by
-Dired (@pxref{Dired}), Message 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 to make the paragraph commands 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
-(@pxref{Indentation}).
-
-@menu
-* Choosing Modes::     How major modes are specified or chosen.
-@end menu
-
-@node Choosing Modes,,Major Modes,Major Modes
-@section How Major Modes are Chosen
-
-@cindex choosing a major mode
-  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 on special text in the file.
-
-  To explicitly select a new major, you use an @kbd{M-x} command.
-Take the name of a major mode and add @code{-mode} to get the name of
-the command to select that mode.  Thus, you can enter Lisp mode by
-executing @kbd{M-x lisp-mode}.
-
-@vindex auto-mode-alist
-  When you visit a file, Emacs usually chooses the right major mode
-automatically.  Normally, it makes the choice based on the file
-name---for example, files whose names end in @samp{.c} are normally
-edited in C mode---but sometimes it chooses the major mode based on
-the contents of the file.  Here is the exact procedure:
-
-  First, Emacs checks whether the file contains a file-local variable
-that specifies the major mode.  If so, it uses that major mode,
-ignoring all other criteria.  @xref{File Variables}.  There are
-several methods to specify a major mode using a file-local variable;
-the simplest is to put the mode name in the first nonblank line,
-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.  Alternatively, you could write
-
-@example
-; -*- mode: Lisp;-*-
-@end example
-
-@noindent
-The latter format allows you to specify local variables as well, like
-this:
-
-@example
-; -*- mode: Lisp; tab-width: 4; -*-
-@end example
-
-@vindex interpreter-mode-alist
-  Second, Emacs checks whether the file's contents begin with
-@samp{#!}.  If so, that indicates that the file can serve as an
-executable shell command, which works by running an interpreter named
-on the file's first line (the rest of the file is used as input to the
-interpreter).  Therefore, Emacs tries to use the interpreter name to
-choose a mode.  For instance, a file that begins with
-@samp{#!/usr/bin/perl} is opened in Perl mode.  The variable
-@code{interpreter-mode-alist} specifies the correspondence between
-interpreter program names and major modes.
-
-  When the first line starts with @samp{#!}, you usually cannot use
-the @samp{-*-} feature on the first line, because the system would get
-confused when running the interpreter.  So Emacs looks for @samp{-*-}
-on the second line in such files as well as on the first line.  The
-same is true for man pages which start with the magic string
-@samp{'\"} to specify a list of troff preprocessors.
-
-@vindex magic-mode-alist
-  Third, Emacs tries to determine the major mode by looking at the
-text at the start of the buffer, based on the variable
-@code{magic-mode-alist}.  By default, this variable is @code{nil} (an
-empty list), so Emacs skips this step; however, you can customize it
-in your init file (@pxref{Init File}).  The value should be a list of
-elements of the form
-
-@example
-(@var{regexp} . @var{mode-function})
-@end example
-
-@noindent
-where @var{regexp} is a regular expression (@pxref{Regexps}), and
-@var{mode-function} is a Lisp function that toggles a major mode.  If
-the text at the beginning of the file matches @var{regexp}, Emacs
-chooses the major mode specified by @var{mode-function}.
-
-Alternatively, an element of @code{magic-mode-alist} may have the form
-
-@example
-(@var{match-function} . @var{mode-function})
-@end example
-
-@noindent
-where @var{match-function} is a Lisp function that is called at the
-beginning of the buffer; if the function returns non-@code{nil}, Emacs
-set the major mode wit @var{mode-function}.
-
-  Fourth---if Emacs still hasn't found a suitable major mode---it
-looks at the file's name.  The correspondence between file names and
-major modes is controlled by the variable @code{auto-mode-alist}.  Its
-value is a list in which each element has this form,
-
-@example
-(@var{regexp} . @var{mode-function})
-@end example
-
-@noindent
-or this form,
-
-@example
-(@var{regexp} @var{mode-function} @var{flag})
-@end example
-
-@noindent
-For example, one element normally found in the list has the form
-@code{(@t{"\\.c\\'"} . c-mode)}, and 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 must
-be used to suppress the special meaning of @samp{.} in regexps.)  If
-the element has the form @code{(@var{regexp} @var{mode-function}
-@var{flag})} and @var{flag} is non-@code{nil}, then after calling
-@var{mode-function}, Emacs discards the suffix that matched
-@var{regexp} and searches the list again for another match.
-
-@vindex auto-mode-case-fold
-  On systems with case-insensitive file names, such as Microsoft
-Windows, Emacs performs a single case-insensitive search through
-@code{auto-mode-alist}.  On other systems, Emacs normally performs a
-single case-sensitive search through the alist.  However, if you
-change the variable @code{auto-mode-case-fold} to @code{t}, Emacs
-performs a second case-insensitive search if the first search fails.
-
-@vindex magic-fallback-mode-alist
-  Finally, if Emacs @emph{still} hasn't found a major mode to use, it
-compares the text at the start of the buffer to the variable
-@code{magic-fallback-mode-alist}.  This variable works like
-@code{magic-mode-alist}, described above, except that is consulted
-only after @code{auto-mode-alist}.  By default,
-@code{magic-fallback-mode-alist} contains forms that check for image
-files, HTML/XML/SGML files, and Postscript files.
-
-@vindex major-mode
-  Once a major mode is chosen, Emacs sets the value of the variable
-@code{major-mode} to the symbol for that major mode (e.g.,
-@code{text-mode} for Text mode).  This is a per-buffer variable
-(@pxref{Locals}); its buffer-local value is set automatically, and you
-should not change it yourself.
-
-  The default value of @code{major-mode} determines the major mode to
-use for files that do not specify a major mode, and for new buffers
-created with @kbd{C-x b}.  Normally, this default value is the symbol
-@code{fundamental-mode}, which specifies Fundamental mode.  You can
-change it via the Customization interface (@pxref{Easy
-Customization}), or by adding a line like this to your init file
-(@pxref{Init File}):
-
-@smallexample
-(setq-default major-mode 'text-mode)
-@end smallexample
-
-@noindent
-If the default value of @code{major-mode} is @code{nil}, the major
-mode is taken from the previously current buffer.
-
-@findex normal-mode
-  If you have changed the major mode of a buffer, you can return to
-the major mode Emacs would have chosen automatically, by typing
-@kbd{M-x normal-mode}.  This is the same function that
-@code{find-file} calls to choose the major mode.  It also processes
-the file's @samp{-*-} line or local variables list (if any).
-@xref{File Variables}.
-
-@vindex change-major-mode-with-file-name
-  The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to
-a new major mode if the new file name implies a mode (@pxref{Saving}).
-(@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.)
-However, this does not happen if the buffer contents specify a major
-mode, and certain ``special'' major modes do not allow the mode to
-change.  You can turn off this mode-changing feature by setting
-@code{change-major-mode-with-file-name} to @code{nil}.
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
new file mode 100644 (file)
index 0000000..314d5d4
--- /dev/null
@@ -0,0 +1,410 @@
+@c This is part of the Emacs manual.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c   Free Software Foundation, Inc.
+@c See file emacs.texi for copying conditions.
+@node Modes, Indentation, International, Top
+@chapter Editing Modes
+
+  Emacs contains many @dfn{editing modes}, each of which alters its
+basic behavior in useful ways.  These are divided into @dfn{major
+modes} and @dfn{minor modes}.
+
+  Major modes provide specialized facilities for working on a
+particular file type, such as a C source file (@pxref{Programs}), or a
+particular type of non-file buffer, such as a shell buffer
+(@pxref{Shell}).  Major modes are mutually exclusive; each buffer has
+one and only one major mode at any time.
+
+  Minor modes are optional features which you can turn on or off, not
+necessarily specific to a type of file or buffer.  For example, Auto
+Fill mode is a minor mode in which @key{SPC} breaks lines between
+words as you type (@pxref{Auto Fill}).  Minor modes are independent of
+one another, and of the selected major mode.
+
+@menu
+* Major Modes::         Text mode vs. Lisp mode vs. C mode...
+* Minor Modes::         Each minor mode is a feature you can turn on
+                          independently of any others.
+* Choosing Modes::      How modes are chosen when visiting files.
+@end menu
+
+@node Major Modes
+@section Major Modes
+@cindex major modes
+@cindex mode, major
+@kindex TAB @r{(and major modes)}
+@kindex DEL @r{(and major modes)}
+@kindex C-j @r{(and major modes)}
+
+  Every buffer possesses a major mode, which determines the editing
+behavior of Emacs while that buffer is current.  The mode line
+normally shows the name of the current major mode, in parentheses.
+@xref{Mode Line}.
+
+  Usually, the major mode is automatically set by Emacs, when you
+first visit a file or create a buffer.  @xref{Choosing Modes}.  You
+can explicitly select a new major mode by using an @kbd{M-x} command.
+Take the name of the mode and add @code{-mode} to get the name of the
+command to select that mode.  Thus, you can enter Lisp mode with
+@kbd{M-x lisp-mode}.
+
+  The least specialized major mode is called @dfn{Fundamental mode}.
+This mode has no mode-specific redefinitions or variable settings, so
+that each Emacs command behaves in its most general manner, and each
+user option variable is in its default state.
+
+  For editing text of a specific type that Emacs knows about, such as
+Lisp code or English text, you typically use a more specialized major
+mode, such as Lisp mode or Text mode.  Such major modes change the
+meanings of some keys to become more specifically adapted to the
+language being edited.  The ones that are commonly changed are
+@key{TAB}, @key{DEL}, and @kbd{C-j}.  The prefix key @kbd{C-c}
+normally contains mode-specific commands.  In addition, the commands
+which handle comments use the mode to determine how comments are to be
+delimited.  Many major modes redefine the syntactical properties of
+characters appearing in the buffer.
+
+  The major modes fall into three major groups.  The first group
+contains modes for normal text, either plain or with mark-up.  It
+includes Text mode, HTML mode, SGML mode, @TeX{} mode and Outline
+mode.  The second group contains modes for specific programming
+languages.  These include Lisp mode (which has several variants), C
+mode, Fortran mode, and others.  The remaining major modes are not
+intended for use on users' files; they are used in buffers created for
+specific purposes by Emacs, such as Dired mode for buffers made by
+Dired (@pxref{Dired}), Message 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 to make the paragraph commands 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
+(@pxref{Indentation}).
+
+@node Minor Modes
+@section Minor Modes
+@cindex minor modes
+@cindex mode, minor
+
+  A minor mode is an optional editing modes that alters the behavior
+of Emacs in some well-defined way.  Unlike major modes, any number of
+minor modes can be in effect at any time.  Some minor modes are
+@dfn{buffer-local}: they apply only to the current buffer, so you can
+enable the mode in certain buffers and not others.  Other minor modes
+are @dfn{global}: while enabled, they affect everything you do in the
+Emacs session, in all buffers.  Some global minor modes are enabled by
+default.
+
+  Most minor modes say in the mode line when they are enabled, just
+after the major mode indicator.  For example, @samp{Fill} in the mode
+line means that Auto Fill mode is enabled.  @xref{Mode Line}.
+
+  Each minor mode is associated with a command, called the @dfn{mode
+command}, which turns it on or off.  The name of this command consists
+of the name of the minor mode, followed by @samp{-mode}; for instance,
+the mode command for Auto Fill mode is @code{auto-fill-mode}.  Calling
+the minor mode command with no prefix argument @dfn{toggles} the mode,
+turning it on if it was off, and off if it was on.  A positive
+argument always turns the mode on, and a zero or negative argument
+always turns it off.  Mode commands are usually invoked with
+@kbd{M-x}, but you can bind keys to them if you wish (@pxref{Key
+Bindings}).
+
+  Most minor modes also have a @dfn{mode variable}, with the same name
+as the mode command.  Its value is non-@code{nil} if the mode is
+enabled, and @code{nil} if it is disabled.  In some minor modes---but
+not all---the value of the variable alone determines whether the mode
+is active: the mode command works simply by setting the variable, and
+changing the value of the variable has the same effect as calling the
+mode command.  Because not all minor modes work this way, we recommend
+that you avoid changing the mode variables directly; use the mode
+commands instead.
+
+  The following is a list of some buffer-local minor modes:
+
+@itemize @bullet
+@item
+Abbrev mode automatically expands text based on pre-defined
+abbreviation definitions.  @xref{Abbrevs}.
+
+@item
+Auto Fill mode inserts newlines as you type to prevent lines from
+becoming too long.  @xref{Filling}.
+
+@item
+Auto Save mode saves the buffer contents periodically to reduce the
+amount of work you can lose in case of a crash.  @xref{Auto Save}.
+
+@item
+Enriched mode enables editing and saving of formatted text.
+@xref{Formatted Text}.
+
+@item
+Flyspell mode automatically highlights misspelled words.
+@xref{Spelling}.
+
+@item
+Font-Lock mode automatically highlights certain textual units found in
+programs.  It is enabled globally by default, but you can disable it
+in individual buffers.  @xref{Faces}.
+
+@findex linum-mode
+@cindex Linum mode
+@item
+Linum mode displays each line's line number in the window's left
+margin.  Its mode command is @code{linum-mode}.
+
+@item
+Outline minor mode provides similar facilities to the major mode
+called Outline mode.  @xref{Outline Mode}.
+
+@cindex Overwrite mode
+@cindex mode, Overwrite
+@findex overwrite-mode
+@kindex INSERT
+@item
+Overwrite mode causes ordinary printing characters to replace existing
+text instead of shoving it to the right.  For example, if point is in
+front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing
+a @kbd{G} changes it to @samp{FOOGAR}, instead of producing
+@samp{FOOGBAR} as usual.  In Overwrite mode, the command @kbd{C-q}
+inserts the next character whatever it may be, even if it is a
+digit---this gives you a way to insert a character instead of
+replacing an existing character.  The mode command,
+@code{overwrite-mode}, is bound to the @key{Insert} key.
+
+@findex binary-overwrite-mode
+@item
+Binary Overwrite mode is a variant of Overwrite mode for editing
+binary files; it treats newlines and tabs like other characters, so
+that they overwrite other characters and can be overwritten by them.
+In Binary Overwrite mode, digits after @kbd{C-q} specify an octal
+character code, as usual.
+
+@item
+Visual Line mode performs ``word wrapping'', causing long lines to be
+wrapped at word boundaries.  @xref{Visual Line Mode}.
+@end itemize
+
+  Here are some useful global minor modes.  Since Line Number mode and
+Transient Mark mode can be enabled or disabled just by setting the
+value of the minor mode variable, you @emph{can} set them differently
+for particular buffers, by explicitly making the corresponding
+variable local in those buffers.  @xref{Locals}.
+
+@itemize @bullet
+@item
+Column Number mode enables display of the current column number in the
+mode line.  @xref{Mode Line}.
+
+@item
+Delete Selection mode causes text insertion to first delete the text
+in the region, if the region is active.  @xref{Using Region}.
+
+@item
+Icomplete mode displays an indication of available completions when
+you are in the minibuffer and completion is active.  @xref{Completion
+Options}.
+
+@item
+Line Number mode enables display of the current line number in the
+mode line.  It is enabled by default.  @xref{Mode Line}.
+
+@item
+Menu Bar mode gives each frame a menu bar.  It is enabled by default.
+@xref{Menu Bars}.
+
+@item
+Scroll Bar mode gives each window a scroll bar.  It is enabled by
+default, but the scroll bar is only displayed on graphical terminals.
+@xref{Scroll Bars}.
+
+@item
+Tool Bar mode gives each frame a tool bar.  It is enabled by default,
+but the tool bar is only displayed on graphical terminals.  @xref{Tool
+Bars}.
+
+@item
+Transient Mark mode highlights the region, and makes many Emacs
+commands operate on the region when the mark is active.  It is enabled
+by default.  @xref{Mark}.
+@end itemize
+
+@node Choosing Modes
+@section Choosing File Modes
+
+@cindex choosing a major mode
+@cindex choosing a minor mode
+@vindex auto-mode-alist
+  When you visit a file, Emacs chooses a major mode automatically.
+Normally, it makes the choice based on the file name---for example,
+files whose names end in @samp{.c} are normally edited in C mode---but
+sometimes it chooses the major mode based on special text in the file.
+This special text can also be used to enable buffer-local minor modes.
+
+  Here is the exact procedure:
+
+  First, Emacs checks whether the file contains file-local mode
+variables.  @xref{File Variables}.  If there is a file-local variable
+that specifies a major mode, then Emacs uses that major mode, ignoring
+all other criteria.  There are several methods to specify a major mode
+using a file-local variable; the simplest is to put the mode name in
+the first nonblank line, 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.  Alternatively, you could write
+
+@example
+; -*- mode: Lisp;-*-
+@end example
+
+@noindent
+The latter format allows you to specify local variables as well, like
+this:
+
+@example
+; -*- mode: Lisp; tab-width: 4; -*-
+@end example
+
+  If a file variable specifies a buffer-local minor mode, Emacs
+enables that minor mode in the buffer.
+
+@vindex interpreter-mode-alist
+  Second, if there is no file variable specifying a major mode, Emacs
+checks whether the file's contents begin with @samp{#!}.  If so, that
+indicates that the file can serve as an executable shell command,
+which works by running an interpreter named on the file's first line
+(the rest of the file is used as input to the interpreter).
+Therefore, Emacs tries to use the interpreter name to choose a mode.
+For instance, a file that begins with @samp{#!/usr/bin/perl} is opened
+in Perl mode.  The variable @code{interpreter-mode-alist} specifies
+the correspondence between interpreter program names and major modes.
+
+  When the first line starts with @samp{#!}, you usually cannot use
+the @samp{-*-} feature on the first line, because the system would get
+confused when running the interpreter.  So Emacs looks for @samp{-*-}
+on the second line in such files as well as on the first line.  The
+same is true for man pages which start with the magic string
+@samp{'\"} to specify a list of troff preprocessors.
+
+@vindex magic-mode-alist
+  Third, Emacs tries to determine the major mode by looking at the
+text at the start of the buffer, based on the variable
+@code{magic-mode-alist}.  By default, this variable is @code{nil} (an
+empty list), so Emacs skips this step; however, you can customize it
+in your init file (@pxref{Init File}).  The value should be a list of
+elements of the form
+
+@example
+(@var{regexp} . @var{mode-function})
+@end example
+
+@noindent
+where @var{regexp} is a regular expression (@pxref{Regexps}), and
+@var{mode-function} is a Lisp function that toggles a major mode.  If
+the text at the beginning of the file matches @var{regexp}, Emacs
+chooses the major mode specified by @var{mode-function}.
+
+Alternatively, an element of @code{magic-mode-alist} may have the form
+
+@example
+(@var{match-function} . @var{mode-function})
+@end example
+
+@noindent
+where @var{match-function} is a Lisp function that is called at the
+beginning of the buffer; if the function returns non-@code{nil}, Emacs
+set the major mode wit @var{mode-function}.
+
+  Fourth---if Emacs still hasn't found a suitable major mode---it
+looks at the file's name.  The correspondence between file names and
+major modes is controlled by the variable @code{auto-mode-alist}.  Its
+value is a list in which each element has this form,
+
+@example
+(@var{regexp} . @var{mode-function})
+@end example
+
+@noindent
+or this form,
+
+@example
+(@var{regexp} @var{mode-function} @var{flag})
+@end example
+
+@noindent
+For example, one element normally found in the list has the form
+@code{(@t{"\\.c\\'"} . c-mode)}, and 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 must
+be used to suppress the special meaning of @samp{.} in regexps.)  If
+the element has the form @code{(@var{regexp} @var{mode-function}
+@var{flag})} and @var{flag} is non-@code{nil}, then after calling
+@var{mode-function}, Emacs discards the suffix that matched
+@var{regexp} and searches the list again for another match.
+
+@vindex auto-mode-case-fold
+  On systems with case-insensitive file names, such as Microsoft
+Windows, Emacs performs a single case-insensitive search through
+@code{auto-mode-alist}.  On other systems, Emacs normally performs a
+single case-sensitive search through the alist.  However, if you
+change the variable @code{auto-mode-case-fold} to @code{t}, Emacs
+performs a second case-insensitive search if the first search fails.
+
+@vindex magic-fallback-mode-alist
+  Finally, if Emacs @emph{still} hasn't found a major mode to use, it
+compares the text at the start of the buffer to the variable
+@code{magic-fallback-mode-alist}.  This variable works like
+@code{magic-mode-alist}, described above, except that is consulted
+only after @code{auto-mode-alist}.  By default,
+@code{magic-fallback-mode-alist} contains forms that check for image
+files, HTML/XML/SGML files, and Postscript files.
+
+@vindex major-mode
+  Once a major mode is chosen, Emacs sets the value of the variable
+@code{major-mode} to the symbol for that major mode (e.g.,
+@code{text-mode} for Text mode).  This is a per-buffer variable
+(@pxref{Locals}); its buffer-local value is set automatically, and you
+should not change it yourself.
+
+  The default value of @code{major-mode} determines the major mode to
+use for files that do not specify a major mode, and for new buffers
+created with @kbd{C-x b}.  Normally, this default value is the symbol
+@code{fundamental-mode}, which specifies Fundamental mode.  You can
+change it via the Customization interface (@pxref{Easy
+Customization}), or by adding a line like this to your init file
+(@pxref{Init File}):
+
+@smallexample
+(setq-default major-mode 'text-mode)
+@end smallexample
+
+@noindent
+If the default value of @code{major-mode} is @code{nil}, the major
+mode is taken from the previously current buffer.
+
+@findex normal-mode
+  If you have changed the major mode of a buffer, you can return to
+the major mode Emacs would have chosen automatically, by typing
+@kbd{M-x normal-mode}.  This is the same function that
+@code{find-file} calls to choose the major mode.  It also processes
+the file's @samp{-*-} line or local variables list (if any).
+@xref{File Variables}.
+
+@vindex change-major-mode-with-file-name
+  The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to
+a new major mode if the new file name implies a mode (@pxref{Saving}).
+(@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.)
+However, this does not happen if the buffer contents specify a major
+mode, and certain ``special'' major modes do not allow the mode to
+change.  You can turn off this mode-changing feature by setting
+@code{change-major-mode-with-file-name} to @code{nil}.
index 3f3da503769a3d4b3694ed83eb2f19a362272645..3c970ecb12c0faa22d68644f35c88a8bdcd47e79 100644 (file)
@@ -1,7 +1,7 @@
 @c This is part of the Emacs manual.
 @c Copyright (C) 1997, 1999-2011  Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
-@node International, Major Modes, Frames, Top
+@node International, Modes, Frames, Top
 @chapter International Character Set Support
 @c This node is referenced in the tutorial.  When renaming or deleting
 @c it, the tutorial needs to be adjusted.  (TUTORIAL.de)