Emacs で独自のキーマップを特定のモードでオンにする。

昨日、分かんないとか言ったけど、そういや家に小関さんの 入門Meadow/Emacs 持ってるのを思い出したので読んだらあっさり解決しました。

;; キーバインドを定義するマイナーモード
(setq my-keyjack-mode-map (make-sparse-keymap))
(mapcar (lambda (x)
          (define-key my-keyjack-mode-map (car x) (cdr x))
          (global-set-key (car x) (cdr x)))
        '(("\t". dabbrev-expand-multiple)
	  ("\C-c\t" . indent-relative)
	  ))

(easy-mmode-define-minor-mode my-keyjack-mode
			      "Grab keys" ; ドキュメント
			      nil ; 初期値 t にすると、全てでオンになる
			      " Keyjack" ; on の時のモード行への表示
			      my-keyjack-mode-map ; マイナモード用キーマップの初期値
			      )

という感じで、初期値を nil にしておくと、勝手にオンにはなりません。後は、読み込みたいモードで、

(add-hook 'cperl-mode-hook
          (lambda ()
	    (my-keyjack-mode 1) ; キーバインドを定義したマイナーモードをオンにする
	    ))

という感じで、無事に特定のモードだけオンにできるようになりました。

わーい。