Transcriptの挙動
d:id:chobie:20080312:1205301030の実行結果を見ていておかしなことに気がついた。最後のCRが実行されていない。
"最後のCRが出ない" Transcript clear;show: 'hello';cr;show: 'world';cr
そもそも#crはCharacter>>crではなくて、Transcriptの親であるWriteStream>>crで、その実装はCharacter>>crを#nextPut:してるだけだった。#show:と何が違うかといえば、#endEntryされてるかどうかの違いみたい。
なので、
"バッファには入ってるみたいだけど表示されない" Transcript nextPutAll: 'bonjours'
ということであり、
"これらは最後のCRも出る" Transcript clear;show: 'hello';cr;show: 'world';show: Character cr. Transcript clear;show: 'hello';cr;show: 'world';cr;flush. Transcript clear;nextPutAll: 'bonjours';cr;endEntry.
ということであった。
まとめ
#flushは#endEntryしてるだけ。
VisualWorksでは#autoFlushがtrueになってるから、1番最初のケースでも問題ない。#clearする前にTranscriptをprint itすると、これまで保存したときのコンソールメッセージみたいなのが出る。