I would be very interested in something like this. Cheers, Doru On 13 Nov 2012, at 10:01, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
Hi,
is there a way how to use nonblocking input from stdin? I have a simple REPL but the stdin is blocking the VM.
| stdin input lineEnd |
stdin := FileStream stdin ifNil: [ ^ self ]. stdin atEnd ifTrue: [ ^ self ].
[ lineEnd := false. FileStream stdout nextPutAll: '> '. input := String streamContents: [:s| [ stdin atEnd or: [lineEnd] ] whileFalse: [ stdin next ifNotNilDo: [:char| char = Character lf ifTrue: [lineEnd := true]. s nextPut: char ]]].
[ FileStream stdout print: (Compiler evaluate: input); lf ] ifError: [:error | FileStream stdout nextPutAll: 'ERROR: ', error asString; lf].
Processor yield. ] repeat
Cheers, -- Pavel
-- www.tudorgirba.com "It's not how it is, it is how we see it."