マクロ再定義したのでそのマクロを利用している関数すべてをリコンパイルしたい - lisp-cookbook-ja/common-lisp GitHub Wiki

SLIME 開発環境

マクロ再定義したのでそのマクロを利用している関数すべてをリコンパイルしたい

slime-who-macroexpands(C-c C-w C-m)を使用します。

下記のようにmy-incというマクロがあり、fooとbarがmy-incを利用していて両者ともコンパイルされているとします。

(defmacro my-inc (var)
  `(incf ,var))

(defun foo (n)
  (my-inc n))

(defun bar (n)
  (my-inc n))

ここでマクロ定義を変更したとすると、fooとbarもコンパイルしなおす必要がありますが、探し出すのが面倒です。

マクロ名のシンボルの上でC-c C-w C-m(slime-who-macroexpands)すると、そのマクロを利用している関数/マクロ一覧が*XREF[:macroexpands: 〜]*に表示されますので、

*XREF[:macroexpands: my-inc]*
#<buffer cl-2008-12-07.lisp>
  (DEFUN BAR)
  (DEFUN FOO)
〜

関数名のところでC-c C-cするか、C-c C-kで*XREFバッファ全体を指定してコンパイルすることが可能です。