diff options
-rw-r--r-- | doc/emacs/ChangeLog | 8 | ||||
-rw-r--r-- | doc/emacs/Makefile.in | 2 | ||||
-rw-r--r-- | doc/emacs/custom.texi | 151 | ||||
-rw-r--r-- | doc/emacs/emacs.texi | 13 | ||||
-rw-r--r-- | doc/emacs/indent.texi | 2 | ||||
-rw-r--r-- | doc/emacs/major.texi | 236 | ||||
-rw-r--r-- | doc/emacs/modes.texi | 410 | ||||
-rw-r--r-- | doc/emacs/mule.texi | 2 |
8 files changed, 428 insertions, 396 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 1b2588fec58..6bc8c7312db 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,5 +1,13 @@ 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. * help.texi (Help Summary): diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index aca17ce817d..9465c726eba 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -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 \ diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index 4ecbb0c42cc..8465dd93519 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -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 diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index c0f1712bada..902de8318b8 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -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. diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index c4ef4781aaf..e13b2808f09 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -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 index ff73e568311..00000000000 --- a/doc/emacs/major.texi +++ /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 index 00000000000..314d5d4347e --- /dev/null +++ b/doc/emacs/modes.texi @@ -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}. diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 3f3da503769..3c970ecb12c 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -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) |