emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/man/major.texi [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/man/major.texi [lexbind]
Date: Tue, 14 Oct 2003 18:56:34 -0400

Index: emacs/man/major.texi
diff -c /dev/null emacs/man/major.texi:1.6.8.1
*** /dev/null   Tue Oct 14 18:56:34 2003
--- emacs/man/major.texi        Tue Oct 14 18:56:24 2003
***************
*** 0 ****
--- 1,175 ----
+ @c This is part of the Emacs manual.
+ @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000 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
+ option 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.
+ @xref{Syntax}.
+ 
+   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}), 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 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.
+ 
+   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}.
+ 
+ @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 @samp{.c} are
+ edited in C mode.  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 address@hidden, then after calling
+ @var{mode-function}, the suffix that matched @var{regexp} is discarded
+ and the list is searched again for another match.
+ 
+   You can specify which major mode should be used for editing a certain
+ file by a special sort of text in the first nonblank 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.  Such an explicit specification overrides
+ any defaults based on the file name.  Note how the semicolon is used
+ to make Lisp treat this line as a comment.
+ 
+   Another format of mode specification is
+ 
+ @example
+ -*- mode: @var{modename};-*-
+ @end example
+ 
+ @noindent
+ which allows you to specify local variables as well, like this:
+ 
+ @example
+ -*- mode: @var{modename}; @var{var}: @var{value}; @dots{} -*-
+ @end example
+ 
+ @noindent
+ @xref{File Variables}, for more information about this.
+ 
+ @vindex interpreter-mode-alist
+   When a file's contents begin with @samp{#!}, it 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.
+ 
+   When you visit such a file in Emacs, if the file's name does not
+ specify a major mode, Emacs uses the interpreter name on the first line
+ to choose a mode.  If the first line is the name of a recognized
+ interpreter program, such as @samp{perl} or @samp{tcl}, Emacs uses a
+ mode appropriate for programs for that interpreter.  The variable
+ @code{interpreter-mode-alist} specifies the correspondence between
+ interpreter program names and major modes.
+ 
+   When the first line starts with @samp{#!}, you cannot (on many
+ systems) 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.
+ 
+ @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}, the variable
+ @code{default-major-mode} specifies which major mode to use.  Normally
+ its 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 current buffer.
+ 
+ @findex normal-mode
+   If you change the major mode of a buffer, you can go back to the major
+ 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).
+ 
+ @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}).
+ 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}.
+ 
+ @ignore
+    arch-tag: f2558800-cf32-4839-8acb-7d3b4df2a155
+ @end ignore




reply via email to

[Prev in Thread] Current Thread [Next in Thread]