マクロを含んだ関数のデバッグをするために、ステップ実行しようとする
と一瞬で終わってしまうことがあります。これについて、ツイッターでア
ドバイスをもらったので、調べてみました。
例えば以下のコードで、hoge() をステップ実行しようとすると
hoge-only の式に入れず、ミニバッファに Result: “ccc” と表示され
一瞬で終わってしまいます。
(defun hoge-p () t)
(defmacro hoge-only (&rest body)
`(cond
((not (hoge-p))
(message "This command can be used in hoge only"))
(t ,@body)))
(defun hoge ()
(hoge-only
(message "aaa")
(message "bbb")
(message "ccc")))
対策は簡単で、以下の S 式を評価するだけです。
(def-edebug-spec hoge-only t)
どこかで見たことあるなあと思ったら、mew-edebug.el
でこれが使われて
いました。なぜ気づかない。。。
元になったつぶやきです。ありがとうございます。
@masutaka macro定義かdef-edebug-specで情報を追加して行うみたいです→ http://to.ly/452F 個人的には使ったことはないですが…。
— mat (@cvmat) May 14, 2010