昨日のマクロその 2

これで何をやりたかったかというと、Emacs Lispコンパイル警告を抑止したかっただけ。無視しても大したことはないんだろうけども。

例えば howm をバイトコンパイルすると、以下のようなコンパイル警告が出る。

In riffle-summary-mode:
riffle.el:191:4:Warning: `make-local-hook' is an obsolete function (as of
    Emacs 21.1); not necessary any more.

Emacs 21.1 より新しいバージョンじゃ、make-local-hook なんて使わなくていいよ的な警告。これを emacs-version を条件として、利用するかしないかを切り替えたい。普通の when だとただの条件分岐になって、結局警告が出る。

そういうわけで C の条件付きコンパイル的な、ある条件を満たす場合だけフォームを生成するマクロがほしかったのでした。

適当なところに when* を宣言して、

(when* (or (string-equal emacs-version "21.1")
           (string-lessp emacs-version "21.1"))
       (make-local-hook 'post-command-hook))

とすれば、さっきの警告は出なくなる。