Previous: Mode Help, Up: Major Modes


22.1.5 派生モードの定義

既存のメジャーモードを用いて新たなメジャーモードを定義できると便利です。 これを行う簡単な方法はdefine-derived-modeを使うことです。

— Macro: define-derived-mode variant parent name docstring body...

これは、nameをモード名を表す文字列として使って variantをメジャーモードコマンドとして定義する。

新たなコマンドvariantは、関数parentを呼び出してから 親モードの特定の機能を無効にするように定義される。

さらに、bodyparentの他の部分を無効にする方法を指定できる。 コマンドvariantは、variant-hookを呼び出す直前、 通常の無効化処理を終えてからbodyのフォームを評価する。

引数docstringは、新たなモードに対する説明文字列を指定する。 docstringを省略すると、 define-derived-modeは説明文字列を生成する。

仮想的な例を示す。

          (define-derived-mode hypertext-mode
            text-mode "Hypertext"
            "Major mode for hypertext.
          \\{hypertext-mode-map}"
            (setq case-fold-search nil))
          
          (define-key hypertext-mode-map
            [down-mouse-3] 'do-hyper-link)