]> code.delx.au - gnu-emacs/blobdiff - man/major.texi
*** empty log message ***
[gnu-emacs] / man / major.texi
index fa44b87303167dd1f15d357894babb23b53331ac..d1f3fbaeebfb8f3a81aac903c99d34d6f045ba84 100644 (file)
@@ -1,5 +1,6 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000 Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
+@c   2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Major Modes, Indentation, International, Top
 @chapter Major Modes
@@ -64,10 +65,10 @@ because most lines in a program are usually indented
 most of the time Emacs determines which mode to use based on the file
 name or on special text in the file.
 
-  Explicit selection of a new major mode is done with a @kbd{M-x} command.
-From the name of a major mode, add @code{-mode} to get the name of a
-command to select that mode.  Thus, you can enter Lisp mode by executing
-@kbd{M-x lisp-mode}.
+  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 based
@@ -98,6 +99,21 @@ the element has the form @code{(@var{regexp} @var{mode-function}
 @var{mode-function}, Emacs discards the suffix that matched
 @var{regexp} and searches the list again for another match.
 
+@vindex magic-mode-alist
+  Sometimes the major mode is determined from the way the file's text
+begins.  The variable @code{magic-mode-alist} controls this.  Its value
+is a list of elements of this form:
+
+@example
+(@var{regexp} . @var{mode-function})
+@end example
+
+@noindent
+This looks like an element of @code{auto-mode-alist}, but it doesn't work
+the same: this @var{regexp} is matched against the text at the start
+of the buffer, not against the file name.  @code{magic-mode-alist}
+takes priority over @code{auto-mode-alist}.
+
   You can specify the major mode to use for editing a certain file by
 special text in the first nonblank line of the file.  The
 mode name should appear in this line both preceded and followed by
@@ -161,7 +177,8 @@ mode is taken from the previously current buffer.
 mode Emacs would choose automatically: use the command @kbd{M-x
 normal-mode} to do this.  This is the same function that
 @code{find-file} calls to choose the major mode.  It also processes
-the file's local variables list (if any).
+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