DIRECTORY Ascii, EditedStream, IO, Rope, SimpleStreams, TypeScript, ViewerIO; SimpleStreamsOnViewerIOImpl: CEDAR MONITOR IMPORTS EditedStream, Rope, SimpleStreams, TypeScript, ViewerIO = BEGIN VCreateSimpleStreams: SimpleStreams.CreateProcType = { ts: TypeScript.TS; IF Rope.IsEmpty[header] THEN header ¬ "Simple Stream"; ts ¬ TypeScript.Create[info: [name: header]]; [in: in, out: out] ¬ ViewerIO.CreateViewerStreams[name: NIL, viewer: ts, editedStream: echo]; IF echo THEN { IF windowSystem = $ViewerIOWithRubout THEN EditedStream.SetDeliverWhen[in, DirtyDeliverOnCrOrLf] ELSE EditedStream.SetDeliverWhen[in, CleanDeliverOnCrOrLf]; }; hasEcho ¬ echo; }; CleanDeliverOnCrOrLf: EditedStream.DeliverWhenProc = { IF char = Ascii.DEL THEN { RETURN [appendChar: FALSE, activate: FALSE]; }; RETURN [appendChar: TRUE, activate: char = Ascii.CR OR char = Ascii.LF] }; DirtyDeliverOnCrOrLf: EditedStream.DeliverWhenProc = { RETURN [appendChar: TRUE, activate: char = Ascii.CR OR char = Ascii.LF]; }; SimpleStreams.ImplementCreate[$ViewerIOWithRubout, VCreateSimpleStreams]; SimpleStreams.ImplementCreate[$ViewerIO, VCreateSimpleStreams]; END. 4 SimpleStreamsOnViewerIOImpl.mesa Copyright Σ 1988, 1992 by Xerox Corporation. All rights reserved. Christian Jacobi, April 18, 1989 3:12:01 pm PDT Christian Jacobi, March 27, 1992 4:19 pm PST --prevent raising EditedStream.Rubout --(not an allowed error to be raised by streams; Pfui EditedStream) Κ8–(cedarcode) style•NewlineDelimiter ™code™ Kšœ Οeœ7™BKšœ/™/K™,—K˜šΟk œ˜ Kšœžœ,˜C—šΟnœžœž˜*Kšžœ žœ+˜A—Kšžœ˜K˜šŸœ"˜6Kšœžœ˜Kšžœžœ˜6K˜-Kšœ8žœ"˜]šžœžœ˜šžœ#˜%Kšžœ6˜:Kšžœ7˜;—K˜—K˜Kšœ˜—K•StartOfExpansiono -- [char: CHAR, buffer: REF TEXT, stream: STREAM, context: REF ANY] RETURNS [appendChar: BOOL, activate: BOOL]˜šŸœ"˜6šžœžœžœ˜KšΟc&™&Kš C™CKšžœžœ žœ˜,Kšœ˜—Kš žœžœžœžœžœ˜HKšœ˜K˜—šŸœ"˜6Kš žœžœžœžœžœ˜HK˜K˜—KšœI˜IKšœ?˜?Kšžœ˜K˜—…—zζ