KAWAでデフォルトの出力形式をreadable-schemeにする方法

~/.kawarc.scmに以下を追加。

(if (eq? (static-field <kawa.Shell> 'defaultFormatName) #!null)
    (invoke-static <kawa.Shell> 'setDefaultFormat "readable-scheme"))

ちなみに、shellが起動した後ではこの技は使えないので次のようにする。

(define (set-display-format format)
  (let* ((ctx (invoke-static <gnu.mapping.CallContext> 'getInstance))
         (out (as <gnu.mapping.OutPort> (field ctx 'consumer))))
    (slot-set! out 'objectFormat format)))

(let ((format (invoke-static <gnu.kawa.functions.DisplayFormat>
                             'getSchemeFormat #t)))
  (set-display-format format))

これはJavaで書くとこうなる。

import gnu.kawa.functions.DisplayFormat;
import gnu.mapping.CallContext;
import gnu.mapping.OutPort;

DisplayFormat format = DisplayFormat.getSchemeFormat(true);
CallContext ctx = CallContext.getInstance();
OutPort out = (OutPort) ctx.consumer;
out.objectFormat = format;