Next: Minor Modes, Previous: Hooks, Up: Modes [Contents][Index]
メジャーモードは特定の種類のテキストの編集や相互作用にたいしてEmacsを特化します。すべてのバッファーは一度に1つのメジャーモードをもちます。すべてのメジャーモードは、メジャーモードコマンド(major mode command)に関連付けられ、そのコマンド名は‘-mode’で終わるべきです。このコマンドは、ローカルキーマップのようなさまざまなバッファーローカル変数をセットすることにより、カレントバッファーないでそのモードに切り替える配慮をします。Major Mode Conventionsを参照してください。マイナーモードとは異なりメジャーモードを“オフに切り替える”手段は存在せず、かわりにバッファーは別のメジャーモードに切り替えられなければなりません。しかしメアーモードを一時的にサスペンドして、後でサスペンドしたモードをリストアできます。以下を参照してください。
Fundamentalモードと呼ばれるモードはもっとも特化されていないメジャーモードであり、モード特有な定義や変数セッティングをもちません。
これはFundamentalモードにたいするメジャーモードコマンドである。他のモードコマンドと異なり、このモードはカスタマイズしてはならないことになっているので、モードフックは何も実行されない(Major Mode Conventionsを参照)。
この関数はすべてのバッファーローカル変数をkillする点においてfundamental-mode
のように機能するが、これは後でリストアできるように効力をもつメジャーモードを記録する。この関数とmajor-mode-restore
(以下参照)は、Emacsがそのバッファー用に自動的に選択したモード(Auto Major Modeを参照)ではない何らかの特化したモードにバッファーを置く必要があり、なおかつ後で元のモードに戻れるようにしたい場合に有用。
この関数はmajor-mode-suspend
が記録したメジャーモードをリストアする。メジャーモードが何も記録されていなければ、この関数はnormal-mode
(normal-modeを参照)を呼び出すが、avoided-modes引数が非nil
ならこの引数内のモードを選択させないように試みる。
メジャーモードを記述するもっとも簡単な方法はマクロdefine-derived-mode
を使用する方法です。これは既存のメジャーモードを変形して新たなモードをセットアップします。Derived Modesを参照してください。define-derived-mode
は多くのコーディング規約を自動的に強要するので、たとえ新たなモードが他のモードから明示的に派生されない場合でも、わたしたちはdefine-derived-mode
の使用を推奨します。派生元とするための一般的なモードについてはBasic Major Modesを参照してください。
標準的なGNU EmacsのLispディレクトリーツリーには、いくつかのメジャーモードがtext-mode.el、texinfo.el、lisp-mode.el、rmail.elのようなファイルとして含まれています。モードの記述方法を確認するために、これらのライブラリーを学ぶことができます。
この変数のバッファーローカル値はカレントのメジャーモードにたいするシンボルを保持する。この変数のデフォルト値は新たなバッファーにたいするデフォルトのメジャーモードを保持する。標準的なデフォルト値はfundamental-mode
である。
デフォルト値がnil
なら、C-x b
(switch-to-buffer
)のようなコマンドを通じてEmacsが新たなバッファーを作成したとき、新たなバッファーは以前カレントだったバッファーのメジャーモードになる。例外として以前のバッファーのメジャーモードのシンボルプロパティmode-class
が値special
をもつ場合には、新たなバッファーはFundamentalモードになる(Major Mode Conventionsを参照)。
• Major Mode Conventions | キーマップなどにたいするコーディング規約。 | |
• Auto Major Mode | Emacsが自動的にメジャーモードを選択する方法。 | |
• Mode Help | モードの使用方法の探し方。 | |
• Derived Modes | 他のメジャーモードにもとづき新たなメジャーモードを定義する。 | |
• Basic Major Modes | 他のモードからよく派生元とされるモード。 | |
• Mode Hooks | メジャーモード関数の最後に実行されるフック。 | |
• Tabulated List Mode | 表形式データを含むバッファーにたいする親モード。 | |
• Generic Modes | コメント構文とFont Lockモードをサポートするシンプルなメジャーモードの定義。 | |
• Example Major Modes | TextモードとLispモード。 |