Emacs Lispでは、気に入らない関数呼び出しを別な関数に置き換えることができる。たとえば、今のウィンドウに表示してほしいのに内部で switch-to-buffer-other-window を呼んでいる場合とか。 こんな場合は、letfやfletやlabelsを使えばよい。letにはlet*という亜種があるように、letfにはletf*という亜種がある。 関数定義をすげ変えるテストケースを el-expectations.el で記述してみる。 (require 'el-expectations) (require 'cl) ; (eval-when-compile (require 'cl)) でもよい (defun f (x) (* 2 x)) (defun g (x) (* 3 x)) (expectations (desc "オリジナル") (expect 4 (f 2))