GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Major-Modes.html ・ emacs-doc.conao3.com

24.2 メジャーモード

メジャーモードは、特定の種類のテキストの編集や操作に特化してEmacsを機能させます。各バッファには、一度にちょうど1つのメジャーモードが設定されます。すべてのメジャーモードにはメジャーモードコマンドが関連付けられており、その名称は‘-mode’で終わる必要があります。このコマンドは、ローカルキーマップなどの各種バッファローカル変数を設定することで、現在のバッファをそのモードに切り替えます。メジャーモードの規約を参照してください。なお、マイナーモードとは異なり、メジャーモードを「オフ」にする方法はなく、代わりにバッファを別のモードに切り替える必要があります。ただし、メジャーモードを一時的にサスペンドし、後でそのサスペンドしたモードを復元することも可能です。詳細は以下を参照してください。

最も特化度の低いメジャーモードはファンダメンタルモードと呼ばれ、モード固有の定義や変数設定はありません。

コマンド: fundamental-mode

This is the major mode command for Fundamental mode. Unlike other mode commands, it does not run any mode hooks (see Major Mode Conventions), since you are not supposed to customize this mode.

関数: major-mode-suspend

この関数は fundamental-mode と同様に、すべてのバッファローカル変数を破棄しますが、同時に適用中のメジャーモードを記録し、後で復元できるようにします。この関数と major-mode-restore(次に説明します)は、Emacs が自動的に選択するモード以外の特定のモードにバッファを設定したい場合(Emacs によるメジャーモードの選択方法 を参照)で、かつ後で元のモードに戻したい場合に有用です。

関数: major-mode-restore &optional avoided-modes

This function restores the major mode recorded by major-mode-suspend. If no major mode was recorded, this function calls normal-mode (see normal-mode), but tries to force it not to choose any modes in avoided-modes, if that argument is non-nil.

関数: clean-mode

メジャーモードを変更すると、ほとんどのローカル変数はクリアされますが、バッファ内のすべてのアーティファクト(テキストプロパティやオーバーレイなど)が削除されるわけではありません。バッファをあるメジャーモードから別のメジャーモードへ変更することは稀であるため(fundamental-modeからそれ以外への変更を除く)、通常はこの点を気にする必要はありません。場合によっては(主にバッファ内の問題をデバッグする際など)、バッファを「フルリセット」することが便利なことがあり、clean-modeメジャーモードはまさにそれを実現します。これにより、すべてのローカル変数(永続的なローカル変数を含む)が消去され、すべてのオーバーレイとテキストプロパティも削除されます。

メジャーモードを記述する最も簡単な方法は、マクロ define-derived-mode を使用することです。これにより、新しいモードが既存のメジャーモードの派生として設定されます。派生モードの定義を参照してください。新しいモードが他のモードの明らかな派生ではない場合でも、define-derived-mode の使用を推奨します。これにより、多くのコーディング規約が自動的に適用されるためです。派生元としてよく使われるモードについては、基本メジャーモードを参照してください。

Tree-sitterライブラリを基盤としたメジャーモードの作成には、いくつかの特有の点や慣習があります。詳細はTree-sitterを用いたメジャーモードの開発を参照してください。

標準的なGNU Emacs Lispのディレクトリツリーには、text-mode.el、texinfo.el、lisp-mode.el、rmail.elといったファイルに、いくつかの主要なモードのコードが含まれています。これらのライブラリを調べることで、モードがどのように記述されているかを確認できます。

ユーザーオプション: major-mode

この変数のバッファローカル値には、現在のメジャーモードのシンボルが格納されます。デフォルト値には、新規バッファのデフォルトメジャーモードが格納されます。標準的なデフォルト値は fundamental-mode です。

デフォルト値が nil の場合、Emacs が C-x b (switch-to-buffer) などのコマンドによって新しいバッファを作成するたびに、その新しいバッファは直前に有効だったバッファのメジャーモードに設定されます。例外として、直前のバッファのメジャーモードが値 special の mode-class シンボルプロパティを持っている場合、新しいバッファは Fundamental モードに設定されます(メジャーモードの規約 を参照)。