trace の表示が狂う。

こないだ入れた trace だけど、
書いた再帰がバグってたりすると、無限ループになってスタックオーバーフローが出ることがある。
するとそれ以降は、結果表示のインデントが大幅に狂ってしまうようだ。

いかにもパッチ当てだけど、使えるようにしてみた。

;; mod
(defmacro trace (&rest args)
  (setq *trace-depth* 0)                       ; add
  (if (null args)
      '*trace-function-list*
    `(let (lst)
       (dolist (func ',args (reverse lst))
         (when (trace-encap func)
           (setq lst (cons func lst)))))))

本当は unwind-protect とかでやるのが正しいと思うけど、今はこれでいいや。
マクロわかってないとこういうのがつらいなぁ。