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すると、これまで保存したときのコンソールメッセージみたいなのが出る。