re: add-hook 疑問

mode解除時に特定の処理をする,というのは書けるんだろうか.要調査.

http://d.hatena.ne.jp/yaotti/20081104/1225812059

lisp/view.el を読んだ*1ところ、view-mode-enable には hook を提供しているのに view-mode-disable には hook を提供していないようですね。

そういう時は advice を定義しましょう :)

(defadvice view-mode-disable (after
			      hl-line-mode-disable
			      activate)
  (hl-line-mode -1))

advice は関数の実行前(before)、実行後(after)、そして実行全体を包んで(around)任意の S 式を実行してくれる素敵な機能です。

たとえば上記のように記述すると view-mode-disable 実行後に (hl-line-mode -1) を実行してくれるようになる訳ですね。

なお関数が本来定義された動作以外の事を行うようになる訳ですから、濫用には十分ご注意ください ;)

*1:[http://cvs.savannah.gnu.org/viewvc/emacs/lisp/view.el?root=emacs&view=markup&pathrev=EMACS_22_BASE:title]