DIRECTORY Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerRec], ViewerOps USING [DestroyViewer]; TypeScript: CEDAR DEFINITIONS IMPORTS ViewerOps = BEGIN TS: TYPE = ViewerClasses.Viewer; Create: PROC [info: ViewerClasses.ViewerRec, paint: BOOL _ TRUE] RETURNS [ts: TS] ; IsATypescript: PROC [ts: TS] RETURNS [yes: BOOL] = INLINE { RETURN [ts # NIL AND ts.class.flavor = $Typescript] }; Destroy: PROC [ts: TS] = INLINE {ViewerOps.DestroyViewer[ts]}; Reset: PROC [ts: TS] = INLINE {ts.class.init[ts]}; PutChar: PROC [ts: TS, char: CHAR] ; PutRope: PROC [ts: TS, rope: Rope.ROPE] ; PutText: PROC [ts: TS, text: REF READONLY TEXT, start: INTEGER _ 0, stopPlusOne: INTEGER _ LAST[INTEGER]]; BackSpace: PROC [ts: TS, count: INT _ 1]; ChangeLooks: PROC [ts: TS, look: CHAR]; AddLooks: PROC [ts: TS, look: CHAR]; RemoveLooks: PROC [ts: TS, look: CHAR]; ClearLooks: PROC [ts: TS]; GetLooks: PROC [ts: TS] RETURNS [looks: Rope.ROPE]; GetChar: PROC [ts: TS] RETURNS [char: CHARACTER] ; CharsAvailable: PROC [ts: TS] RETURNS [BOOLEAN] ; TypeIn: PROC [ts: TS, input: REF ANY] = INLINE {ts.class.notify[ts, LIST[input]]} ; InsertRopeAtFrontOfBuffer: PROC [ts: TS, rope: Rope.ROPE]; InsertCharAtFrontOfBuffer: PROC [ts: TS, char: CHARACTER]; Flush: PROC [ts: TS]; WaitUntilIdle: PROC [ts: TS]; WaitUntilCharsAvail: PROC [ts: TS]; UserAbort: PROC [ts: TS] RETURNS [abort: BOOLEAN] ; ResetUserAbort: PROC [ts: TS] ; SetUserAbort: PROC [ts: TS] ; END. JTypeScript.mesa; Edited by Paxton on January 4, 1983 2:31 pm Last Edited by: Maxwell, January 5, 1983 9:57 am Last Edited by: Teitelman, January 10, 1983 1:09 pm Creating and destroying typescripts Destroys typescript viewer and related data structures Erases all the typescript text data and clears the screen. Output to typescript Delete character(s) from end of ts. look char in 'a..'z means add that look in 'A..'Z means remove blank means remove all looks Following echoed chars will have the given look. Look char must be in ['a..'z] or nothing happens' To remove looks previously added by AddLooks. Look char must be in ['a..'z] or nothing happens' Following echoed chars will not have any looks.' Following echoed chars will not have any looks.' Input from typescript RETURNS TRUE if no chars waiting. Simulate user typein to a typescript can be REF CHARACTER, ROPE, REF TEXT, or ATOM (be careful). This will be the next thing read, even if there are characters waiting in the input buffer. Synchronization This won't return until echo buffer has been emptied and all chars inserted in ts. (done automatically by BackSpace, AddLooks, and ClearLooks)' This won't return until input buffer has been emptied and input process is waiting in GetChar for more characters. This won't return until a character is available to GetChar. Aborting Κα– "Cedar" style˜JšΟc<™Jš6™6—J˜š‘œžœžœžœ˜2Jš:™:——šœ™Jš‘œžœžœžœ˜$J˜Jš‘œžœžœ žœ˜)J˜š‘œžœžœžœžœžœ žœ˜CJšœ žœžœžœ˜&J˜—J˜š‘ œžœžœ žœ˜)Jš#™#—J˜š‘ œžœžœžœ˜'Jšœ'™'Jšœ™Jšœ™J™—š‘œžœžœžœ˜$Jšb‘™c—J˜š‘ œžœžœžœ˜'Jš_‘™`—J˜š‘ œžœžœ˜Jš/‘™0—J˜š ‘œžœžœžœžœ˜3Jš/‘™0——šœ™Jš ‘œžœžœžœž œ˜2J˜š ‘œžœžœžœžœ˜1Jš!™!J˜Jš$™$—J˜š ‘œžœžœ žœžœž˜.Jšœžœ ˜$Jš;™;—J˜š ‘œžœžœ žœž˜:J™[—J˜Jš ‘œžœžœž œž˜:—™š‘œžœžœ˜JšŽ‘™—J˜š‘ œžœžœ˜Jšr™r—J™š‘œžœžœ˜#Jš<™<——™Jš ‘ œžœžœžœ žœ˜3J˜Jš‘œžœžœ˜J˜Jš‘ œžœžœ˜—J˜Jšžœ˜J˜J˜—…—Ίε