@c =============================================================
@c = 元 翻 訳: 鈴木悦子＠津田塾大学
@c = 加筆修正: 大木敦雄＠大塚.筑波大学 = 1998/11/25
@c = 20.4改訂: 大木敦雄＠大塚.筑波大学 = 1999/09/12
@c =============================================================
@c This is part of the Emacs manual.
@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Major Modes, Indentation, International, Top
@c @chapter Major Modes
@c @cindex major modes
@c @cindex mode, major
@chapter メジャーモード
@cindex メジャーモード
@cindex モード、メジャー
@c @kindex TAB @r{(and major modes)}
@c @kindex DEL @r{(and major modes)}
@c @kindex C-j @r{(and major modes)}
@kindex TAB @r{（とメジャーモード）}
@kindex DEL @r{（とメジャーモード）}
@kindex C-j @r{（とメジャーモード）}

@c   Emacs provides many alternative @dfn{major modes}, each of which
@c customizes Emacs for editing text of a particular sort.  The major modes
@c are mutually exclusive, and each buffer has one major mode at any time.
@c The mode line normally shows the name of the current major mode, in
@c parentheses (@pxref{Mode Line}).
Emacsには、多数の選択できる@dfn{メジャーモード}（major mode）があり、
各モードは特定の種類のテキストを編集するためにEmacsをカスタマイズします。
メジャーモードは相互に排他的で、
各バッファはいつでも1つのメジャーモードだけを持ちます。
モード行は、通常、現行のメジャーモードの名前を括弧の中に表示します
（@pxref{Mode Line}）。

@c   The least specialized major mode is called @dfn{Fundamental mode}.
@c This mode has no mode-specific redefinitions or variable settings, so
@c that each Emacs command behaves in its most general manner, and each
@c option is in its default state.  For editing text of a specific type
@c that Emacs knows about, such as Lisp code or English text, you should
@c switch to the appropriate major mode, such as Lisp mode or Text mode.
もっとも特殊化されていないメジャーモードは、
@dfn{基本（fundamental）モード}と呼ばれます。
このモードには、モード独自の再定義や変数設定がなく、
各Emacsコマンドはもっとも一般的なふるまいをして、
各オプションはデフォルトの状態になっています。
Lispや英文のように、Emacsが知っている特定の種類のテキストを編集するには、
Lispモードや、テキスト（text）モードのような
適切なメジャーモードに切り替えるべきです。

@c   Selecting a major mode changes the meanings of a few keys to become
@c more specifically adapted to the language being edited.  The ones that
@c are changed frequently are @key{TAB}, @key{DEL}, and @kbd{C-j}.  The
@c prefix key @kbd{C-c} normally contains mode-specific commands.  In
@c addition, the commands which handle comments use the mode to determine
@c how comments are to be delimited.  Many major modes redefine the
@c syntactical properties of characters appearing in the buffer.
@c @xref{Syntax}.
メジャーモードを選択することは、
編集対象の言語により明確に適応するようにキーの意味を多少変更することです。
よく変更されるキーは@key{TAB}、@key{DEL}、@kbd{C-j}です。
プレフィックスキー@kbd{C-c}は、モード特有のコマンドを含みます。
さらに、コメントを扱うコマンドは、
モードを使ってコメントの区切り方を決定します。
多くのメジャーモードでは、
バッファ内に現れる文字の構文上の属性を再定義しています。
@xref{Syntax}。

@c   The major modes fall into three major groups.  Lisp mode (which has
@c several variants), C mode, Fortran mode and others are for specific
@c programming languages.  Text mode, Nroff mode, @TeX{} mode and Outline
@c mode are for editing English text.  The remaining major modes are not
@c intended for use on users' files; they are used in buffers created for
@c specific purposes by Emacs, such as Dired mode for buffers made by Dired
@c (@pxref{Dired}), Mail mode for buffers made by @kbd{C-x m}
@c (@pxref{Sending Mail}), and Shell mode for buffers used for
@c communicating with an inferior shell process (@pxref{Interactive
@c Shell}).
メジャーモードは3つのグループに分けられます。
（いくつかの変種を有する）Lispモード、Cモード、Fortranモード、
その他のプログラム言語特有のモードのグループがあります。
テキスト（text）モード、nroffモード、
@TeX{}とアウトライン（outline）モードなど
英文を編集するためのものがあります。
残りのメジャーモードは、ユーザーのファイルに使うためのものではありません。
Emacsが特別の目的のために作るバッファで使われます。
dired（@pxref{Dired}）が作るバッファ向けのdiredモード（@pxref{Dired}）、
@kbd{C-x m}で作られるバッファ向けの
メイル（mail）モード（@pxref{Sending Mail}）、
下位のシェルプロセスとの通信用のバッファ向けのシェル（shell）モード
（@pxref{Interactive Shell}）などです。

@c   Most programming-language major modes specify that only blank lines
@c separate paragraphs.  This is to make the paragraph commands useful.
@c (@xref{Paragraphs}.)  They also cause Auto Fill mode to use the
@c definition of @key{TAB} to indent the new lines it creates.  This is
@c because most lines in a program are usually indented.
@c (@xref{Indentation}.)
ほとんどのプログラム言語用のメジャーモードでは、
段落の区切りは空行だけです。
これは、段落コマンドを役立つようにするためです。
（@pxref{Paragraphs}。）
また、これらのモードでは、
自動詰め込み（auto-fill）モードにおいて、
新たに作った行を字下げするように@key{TAB}を定義します。
というのは、プログラム中のほとんどの行は通常字下げされるからです。
（@pxref{Indentation}。）

@menu
* Choosing Modes::     How major modes are specified or chosen.
@end menu

@node Choosing Modes,,Major Modes,Major Modes
@c @section How Major Modes are Chosen
@section メジャーモードの選択方式

@c @cindex choosing a major mode
@cindex メジャーモードの選択
@c   You can select a major mode explicitly for the current buffer, but
@c most of the time Emacs determines which mode to use based on the file
@c name or on special text in the file.
カレントバッファに対して明示的にメジャーモードを選択することもできます。
しかし、たいていは、ファイル名やファイル内の特別のテキストに基づいて
Emacsはどのモードを使うかを決定します。

@c   Explicit selection of a new major mode is done with a @kbd{M-x} command.
@c From the name of a major mode, add @code{-mode} to get the name of a
@c command to select that mode.  Thus, you can enter Lisp mode by executing
@c @kbd{M-x lisp-mode}.
明示的に新しいメジャーモードを選択するには、@kbd{M-x}コマンドで行います。
メジャーモードの名前に@code{-mode}を付け加えると、
そのモードを選ぶコマンド名になります。
したがって、Lispモードに入るには@kbd{M-x lisp-mode}を実行します。

@vindex auto-mode-alist
@c   When you visit a file, Emacs usually chooses the right major mode based
@c on the file's name.  For example, files whose names end in @samp{.c} are
@c edited in C mode.  The correspondence between file names and major modes is
@c controlled by the variable @code{auto-mode-alist}.  Its value is a list in
@c which each element has this form,
ファイルを訪問すると、Emacsは通常ファイル名に基づいて
正しいメジャーモードを選択します。
たとえば、@samp{.c}で終る名前のファイルは、Cモードで編集されます。
ファイル名とメジャーモードとの対応は、
変数@code{auto-mode-alist}で制御します。
その値は、要素がつぎのような形式のリストです。

@example
(@var{regexp} . @var{mode-function})
@end example

@noindent
@c or this form,
または、つぎの形式です。

@example
(@var{regexp} @var{mode-function} @var{flag})
@end example

@noindent
@c For example, one element normally found in the list has the form
@c @code{(@t{"\\.c\\'"} . c-mode)}, and it is responsible for selecting C
@c mode for files whose names end in @file{.c}.  (Note that @samp{\\} is
@c needed in Lisp syntax to include a @samp{\} in the string, which is
@c needed to suppress the special meaning of @samp{.} in regexps.)  If the
@c element has the form @code{(@var{regexp} @var{mode-function}
@c @var{flag})} and @var{flag} is non-@code{nil}, then after calling
@c @var{function}, the suffix that matched @var{regexp} is discarded and
@c the list is searched again for another match.
たとえば、このリストに通常ある要素は、
@code{(@t{"\\.c\\'"}. c-mode)}です。
これは、@file{.c}で終る名前のファイルにはCモードを選びます。
（Lispの構文では、@samp{\}を含めるには@samp{\\}が必要。
また、@samp{\}は、正規表現の@samp{.}の特別な意味を抑制するために必要。）
リストの要素が
@code{(@var{regexp} @var{mode-function} @var{flag})}の形式で
@var{flag}が@code{nil}以外ならば、
@var{function}を呼んだあとに@var{regexp}に一致する接尾辞を捨てて、
リストで他に一致するものをふたたび探します。

@c   You can specify which major mode should be used for editing a certain
@c file by a special sort of text in the first nonblank line of the file.  The
@c mode name should appear in this line both preceded and followed by
@c @samp{-*-}.  Other text may appear on the line as well.  For example,
ファイルの空行でない最初の行の特別な種類のテキストによって、
そのファイルを編集するためにどのメジャーモードを使うかを指定できます。
モード名は、その行に@samp{-*-}で囲まれて現れます。
他のテキストがその行にあってもかまいません。
たとえば、

@example
;-*-Lisp-*-
@end example

@noindent
@c tells Emacs to use Lisp mode.  Such an explicit specification overrides
@c any defaulting based on the file name.  Note how the semicolon is used
@c to make Lisp treat this line as a comment.
は、EmacsにLispモードを使うように指示します。
このような明示的な指定は、
ファイル名に基づいたメジャーモードに優先します。
この行がLispのコメントになるように
セミコロンを使っていることに注意してください。

@c   Another format of mode specification is
モードを指定する別の書式は、つぎのとおりです。

@example
-*- mode: @var{modename};-*-
@end example

@noindent
@c which allows you to specify local variables as well, like this:
これは、同様にローカル変数も指定できて、つぎのように書きます。

@example
-*- mode: @var{modename}; @var{var}: @var{value}; @dots{} -*-
@end example

@noindent
@c @xref{File Variables}, for more information about this.
より詳しくは、@xref{File Variables}。

@vindex interpreter-mode-alist
@c   When a file's contents begin with @samp{#!}, it can serve as an
@c executable shell command, which works by running an interpreter named on
@c the file's first line.  The rest of the file is used as input to the
@c interpreter.
ファイルの内容が@samp{#!}で始まるときは、
ファイルの1行目で指定したコマンドインタープリタを実行することで、
実行可能なシェルコマンドとして働きます。
ファイルの残りの部分は、インタープリタへの入力として使われます。

@c   When you visit such a file in Emacs, if the file's name does not
@c specify a major mode, Emacs uses the interpreter name on the first line
@c to choose a mode.  If the first line is the name of a recognized
@c interpreter program, such as @samp{perl} or @samp{tcl}, Emacs uses a
@c mode appropriate for programs for that interpreter.  The variable
@c @code{interpreter-mode-alist} specifies the correspondence between
@c interpreter program names and major modes.
Emacsでそのようなファイルを訪問したとき、
ファイルの名前がメジャーモードを指定しないときには、
Emacsはモードを選択するために1行目のインタープリタの名前を使います。
1行目が、@samp{perl}や@samp{tcl}のような認識される
インタープリタプログラムの名前ならば、
Emacsはインタープリタのプログラムにとって適切なモードを使用します。
変数@code{interpreter-mode-alist}は、
インタープリタプログラム名とメジャーモードとの対応を指定します。

@c   When the first line starts with @samp{#!}, you cannot (on many
@c systems) use the @samp{-*-} feature on the first line, because the
@c system would get confused when running the interpreter.  So Emacs looks
@c for @samp{-*-} on the second line in such files as well as on the
@c first line.
1行目が@samp{#!}で始まるときには、
インタープリタを実行するときにシステムが混乱するため、
1行目では@samp{-*-}の機能を使えません。
そのため、そのようなファイルでは、Emacsは1行目に加えて2行目でも
@samp{-*-}を探します。

@vindex default-major-mode
@c   When you visit a file that does not specify a major mode to use, or
@c when you create a new buffer with @kbd{C-x b}, the variable
@c @code{default-major-mode} specifies which major mode to use.  Normally
@c its value is the symbol @code{fundamental-mode}, which specifies
@c Fundamental mode.  If @code{default-major-mode} is @code{nil}, the major
@c mode is taken from the previously selected buffer.
使用するメジャーモードを指定しないファイルを訪問したとき、
あるいは、@kbd{C-x b}で新たにバッファを作るときには、
変数@code{default-major-mode}が、使用するモードを指定します。
通常、その値は、基本（fundamental）モードを指定する
シンボル@code{fundamental-mode}です。
@code{default-major-mode}が@code{nil}なら、
メジャーモードはまえに選択していたバッファのモードと同じものとなります。

@findex normal-mode
@c   If you change the major mode of a buffer, you can go back to the major
@c mode Emacs would choose automatically: use the command @kbd{M-x
@c normal-mode} to do this.  This is the same function that
@c @code{find-file} calls to choose the major mode.  It also processes
@c the file's local variables list if any.
バッファのメジャーモードを変更しても、
Emacsが自動的に選択するメジャーモードに戻れます。
それには、コマンド@kbd{M-x normal-mode}を使います。
このコマンドは、メジャーモードを選択するために
@code{find-file}が呼び出す関数と同じ関数です。
この関数は、ファイル中にローカル変数リストがあればそれも処理します。

@vindex change-major-mode-with-file-name
@c   The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to
@c a new major mode if the new file name implies a mode (@pxref{Saving}).
@c However, this does not happen if the buffer contents specify a major
@c mode, and certain ``special'' major modes do not allow the mode to
@c change.  You can turn off this mode-changing feature by setting
@c @code{change-major-mode-with-file-name} to @code{nil}.
コマンド@kbd{C-x C-w}と@code{set-visited-file-name}は、
新しいファイル名がモードを示すものであるなら、
新しいメジャーモードに変更します（@pxref{Saving}）。
しかし、バッファの内容がメジャーモードを指定していて、かつ、
ある『特別な』メジャーモードがそのモードの変更を許さないなら、
メジャーモードは変更されません。
@code{change-major-mode-with-file-name}を@code{nil}に設定すると、
このモード変更機能をオフにできます。
