おきらくなモードの作り方

既成のモードをちょっとだけ変更したモードを作りたい場合は、簡単な方法が ある。define-derived-mode というマクロを 使うのである。C-h f で調べてみれば分かるよう に、これは、

   (define-derived-mode CHILD PARENT NAME DOCSTRING BODY)
   CHILD:     作りたいモード名
   PARENT:    親モード名
   NAME:      モード行に表示するモード名の文字列
   DOCSTRING: このモードの説明文字列
   BODY:      本体

という書式になっている。キーマップは自動的に "モード名-map" という名前 で、親モード名のものが引き継がれる。例えば、Text mode をちょっと変更し て My Text mode を作りたい場合、

(define-derived-mode my-text-mode text-mode "My Text"
  "Major mode for edit article."
  (define-key my-text-mode-map "\C-c\C-c" 'my-text-command1)
  (define-key my-text-mode-map "\C-c\C-q" 'my-text-command2))

などとすれば、C-c C-cC-c C-q のキーマップだけが変更されたモードが できる。モード名-hook は自動的に実行される。BODY の部分にはその前に実 行すべきコードを書く。これはこれで結構便利である。


[目次に戻る] [もっとまっとうなモードの作り方] [Emacs のページに戻る]