bowbow99 / xyzzy.condition-restart

<discontinued> xyzzy で condition 投げた後の restart をサポート
MIT License
3 stars 0 forks source link

再起動を princ したときは REPORT-FUNCTION を使う #2

Open bowbow99 opened 13 years ago

bowbow99 commented 13 years ago

princ というか *print-escape*nil だったら REPORT-FUNCTION を使う。

CLHS: Macro RESTART-BIND

:report-function
Value is evaluated in the current lexical environment and should return a function of one argument, a stream, which prints on the stream a summary of the action that this restart takes. This function is called whenever the restart is reported (printed while print-escape is nil). If no :report-function option is provided, the manner in which the restart is reported is implementation-dependent.

;; on SBCL
CL-USER> (restart-case
             (princ (find-restart 'example))
           (example ()
             :report "I'm example."
             t))
I'm example.
#<RESTART EXAMPLE {BC6FAA9}>
bowbow99 commented 13 years ago

xyzzy は出力時に printer control variables を設定してないみたい。

元々 xyzzy で出力時に lisp コードが走るのは structure を princ 出力した時だけのはずなので困ることはないんだろうけど、手元では structure を出力するのに常に print-function を使うようにしてて、printer control variables が設定されてないと print-function 内部からは判断付かなくなってしまう。