2011-02-02   emacs   mac 

Emacsのlatex-modeでC-cキーを別の機能に割り当てる(add-hookの利用)

Macで秀丸エディタが使えないので、Emacsのキー割り当てを全面的に自分用に変更しています。

ところが、latex-modeになったとたん、C-cがLaTeXの処理などに割り当てられてしまいます。さあ困った。私はC-cを別の機能で使いたい。

そこで、latex-modeになったときに改めて自分用にキー割り当てし直すようにしました。

以下のコードを~/.emacs.d/init.elに書いておきます。

(defun reassign-tex-mode-keymap()
  (define-key latex-mode-map (kbd "C-c") 'end-of-buffer))
(add-hook 'tex-mode-load-hook 'reassign-tex-mode-keymap)

tex-mode(含latex-mode)の初期化が終わった最終段階で、tex-mode-load-hookに登録されているフック関数が呼び出されます。そこで関数add-hookを使って自前のreassign-tex-mode-keymapという関数を登録しておくという仕組みです。

呼び出される関数reassign-tex-mode-keymapでは、latex-mode-mapというtex-modeの中で使われているキーマップに自分用のキー割り当てを設定しています。

ここでは、C-cキーをend-of-buffer(バッファの最後に移動)に割り当てています。

ちなみに以上の情報はどうやって得たかというと、Emacs Lispのtex-mode.elを読み、GNU Emacsのマニュアルでadd-hookのあたりを調べました。

 2011-02-02   emacs   mac