#2 structure の print-function (1)

xyzzy だと ~A のときだけ print-function 使って出力する。~S のときは #S notation になる。今までそーゆーもんだと思ってたけど、sbcl は print-function 指定しておけばどっちでも print-function 使って出力してくれる。

closette でけっこー入り組んだ structure 使ってて、そのために print-function も定義してあるんだけど、xyzzy だと使ってくれないんで長すぎてかなわん。

format の ~S で structure の print-function 使うようにできればいいんだが、それは C++ のソースに手入れる必要があるのですぐにはできない。とりあえず *scratch* だけなんとかすべく lisp/lispmode.l::eval-region をごにょっておいた。

    (eval-region-print
      stream
      (if (null stream)
          (message "~s" (car result))
        (dolist (obj result)
          (format t "=> ~:[~S~:;~A~]~%" (si:*structurep obj) obj))))
        ;(format t "~{~S~%~}" result)))