xyzzyでmode作成に挑戦。printfデバッグについて

 既存lispの解析方法について、あれこれと検討しました。
しかしxyzzy*1のモード等作ってる人どんな手順でコード動作の確認とか解析してるんだろうか?

まず基本として.xyzzyにトレースを有効化*2

;;; トレース機能を有効にする
(toggle-trace-on-error)


次にこれまた基本のprintfデバッグ的な方法について検討。

一先ずhello world

  (with-output-to-buffer ((find-buffer "*scratch*"))
     (format t "hello world~%"))

で一先ず出力をかましてみたが失敗。

(defun debag-target (value)
  ...
  (with-output-to-buffer ((switch-to-buffer "*Output*"))
    (format t (string value)));;;printf-likeコードのつもりだけどdebag-targetの挙動が変わってしまってるので失敗
  ...
  )

調べてみると、msgbox使うとの事。

(defun debag-target (value)
  ...
  (msgbox "~S" value)
  ...
  )

あらら、簡単^^;でもメッセージボックス閉じるのがめんどくさいw;
バッファ作ってそこに吐き出すように検討。

(defun debag-target (value)
  (with-output-to-buffer ((if (find-buffer "*Output*")
			      (find-buffer "*Output*")
			    (switch-to-buffer "*Output*")));;;with-で全体を包んでやる
  ...
  (format t "~D~%" value)
  ...
  );with-output-to-buffer
  )

こんな感じかな^^

*1:emacsも同様でしょうけど

*2:毎度呼び出すの疲れるのでw;