(DEFINE-FILE-INFO PACKAGE "LISP" READTABLE "XCL" BASE 10)
(IL:FILECREATED "28-Mar-94 16:05:24" IL:|{PELE:MV:ENVOS}<LISPCORE>LIBRARY>TEDITCHAT.;3| 31193  

      IL:|changes| IL:|to:|  (IL:FNS IL:\\TEXTSTREAMBOUT)

      IL:|previous| IL:|date:| "12-Jun-90 18:01:39" IL:|{PELE:MV:ENVOS}<LISPCORE>LIBRARY>TEDITCHAT.;2|
)


; Copyright (c) 1985, 1986, 1990, 1994 by Venue & Xerox Corporation.  All rights reserved.

(IL:PRETTYCOMPRINT IL:TEDITCHATCOMS)

(IL:RPAQQ IL:TEDITCHATCOMS
          ((IL:COMS                                          (IL:* IL:\; "character routines")
                  (IL:FNS IL:TEDITCHAT.CHARFN IL:\\TEXTSTREAMBOUT))
           (IL:COMS (IL:FNS IL:TEDITSTREAM.INIT IL:TEDITCHAT.MENUFN))
           (IL:COMS                                          (IL:* IL:\; "TEDIT update routines")
                  (IL:FNS IL:TEDIT.DISPLAYTEXT))
           (IL:GLOBALVARS IL:TEDITCHAT.MENU IL:CHAT.DRIVERTYPES IL:CHAT.DISPLAYTYPES)
           (IL:VARS IL:TEDITCHAT.MENUITEMS (IL:TEDITCHAT.MENU))
           (IL:ADDVARS (IL:CHAT.DRIVERTYPES (IL:TEDIT IL:TEDITCHAT.CHARFN IL:NILL)))
           (IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY (IL:FILES (IL:SOURCE)
                                                            IL:CHATDECLS))))



(IL:* IL:\; "character routines")

(IL:DEFINEQ

(IL:TEDITCHAT.CHARFN
  (IL:LAMBDA (IL:CH IL:CHAT.STATE)               (IL:* IL:\; "Edited 12-Jun-90 18:00 by mitani")
    (LET* ((IL:TEXTSTREAM (IL:|fetch| (IL:CHAT.STATE IL:TEXTSTREAM) IL:|of| IL:CHAT.STATE))
           (IL:SEL (IL:|fetch| (IL:TEXTOBJ IL:SEL) IL:|of| (IL:TEXTOBJ IL:TEXTSTREAM))))
          (IL:\\CARET.DOWN (IL:|fetch| (IL:TEXTOBJ IL:DS) IL:|of| (IL:TEXTOBJ IL:TEXTSTREAM))
                 )
          (IL:SELCHARQ IL:CH
                (IL:BS (IL:\\TEDIT.CHARDELETE IL:TEXTSTREAM "" IL:SEL)
                       (IL:MOVETO (IL:|fetch| IL:X0 IL:|of| IL:SEL)
                              (IL:|fetch| IL:Y0 IL:|of| IL:SEL)
                              (CAR (IL:|fetch| (IL:TEXTOBJ IL:\\WINDOW) IL:|of| (IL:TEXTOBJ
                                                                                         
                                                                                        IL:TEXTSTREAM
                                                                                         )))))
                (IL:LF NIL)
                (IL:BOUT IL:TEXTSTREAM IL:CH)))))

(IL:\\TEXTSTREAMBOUT
  (IL:LAMBDA (STREAM BYTE)                          (IL:* IL:\; "Edited 28-Mar-94 15:29 by jds")

    (IL:* IL:|;;| "Do BOUT to a text stream, which is an insertion at the caret.")

    (PROG ((IL:TEXTOBJ (IL:|fetch| (IL:TEXTSTREAM IL:TEXTOBJ) IL:|of| STREAM))
           IL:CH# IL:WINDOW IL:TEXTLEN IL:PS IL:PC IL:PSTR IL:OFFST IL:SEL)
          (IL:SETQ IL:TEXTLEN (IL:|fetch| (IL:TEXTOBJ IL:TEXTLEN) IL:|of| IL:TEXTOBJ))
          (IL:SETQ IL:WINDOW (IL:|fetch| (IL:TEXTOBJ IL:\\WINDOW) IL:|of| IL:TEXTOBJ))
          (IL:SETQ IL:SEL (IL:|fetch| (IL:TEXTOBJ IL:SEL) IL:|of| IL:TEXTOBJ))
          (COND
             ((NOT (CAR (IL:|fetch| IL:L1 IL:|of| IL:SEL)))
              (RETURN)))                                     (IL:* IL:\; 
                                 "Return if caret out of bounds, ie, user scrolls past end of text")
          (IL:SETQ IL:CH# (IL:|fetch| IL:CH# IL:|of| IL:SEL))
          (AND IL:WINDOW (IL:\\TEDIT.MARK.LINES.DIRTY IL:TEXTOBJ IL:CH# IL:CH#))
          (COND
             ((IL:IEQP BYTE 13)
              (IL:\\INSERTCR BYTE IL:CH# IL:TEXTOBJ))
             (T (IL:\\INSERTCH BYTE IL:CH# IL:TEXTOBJ)))
          (AND IL:WINDOW
               (PROG ((IL:THISLINE (IL:|fetch| (IL:TEXTOBJ IL:THISLINE) IL:|of| IL:TEXTOBJ))
                      IL:EOLFLAG IL:CHORIG IL:CHWIDTH IL:OXLIM IL:OCHLIM IL:OCR\\END IL:PREVSPACE 
                      IL:FIXEDLINE IL:NEXTLINE IL:LINES IL:NEWLINEFLG IL:DX IL:PREVLINE IL:SAVEWIDTH
                      IL:OFLOWFN IL:OLHEIGHT IL:DY IL:TABSEEN IL:IMAGECACHE IL:CURLINE IL:FONT
                      (IL:L1 (CAR (IL:|fetch| IL:L1 IL:|of| IL:SEL)))
                      (IL:LN (CAR (IL:|fetch| IL:LN IL:|of| IL:SEL)))
                      (IL:LOOKS (IL:\\TEDIT.APPLY.STYLES (IL:|fetch| (IL:TEXTOBJ IL:CARETLOOKS)
                                                            IL:|of| IL:TEXTOBJ)
                                       (IL:|fetch| (IL:TEXTOBJ IL:\\INSERTPC) IL:|of| 
                                                                                        IL:TEXTOBJ)
                                       IL:TEXTOBJ)))
                     (IL:|add| (IL:|fetch| IL:CH# IL:|of| IL:SEL)
                            1)                               (IL:* IL:\; 
                                  "These must be here, since SELs are valid even without a window.")
                     (IL:|replace| IL:CHLIM IL:|of| IL:SEL IL:|with| (IL:|fetch|
                                                                                  IL:CH# IL:|of|
                                                                                         IL:SEL))
                     (IL:|replace| IL:POINT IL:|of| IL:SEL IL:|with| 'IL:LEFT)
                     (IL:|replace| IL:DCH IL:|of| IL:SEL IL:|with| 0)
                     (IL:|replace| IL:SELKIND IL:|of| IL:SEL IL:|with| 'IL:CHAR)
                     (IL:SETQ IL:CURLINE IL:L1)
                     (IL:|add| (IL:|fetch| IL:CHARLIM IL:|of| IL:CURLINE)
                            1)
                     (IL:|add| (IL:|fetch| IL:CHARTOP IL:|of| IL:CURLINE)
                            1)
                     (IL:SETQ IL:FONT (IL:|fetch| IL:CLFONT IL:|of| IL:LOOKS))
                     (IL:DSPFONT IL:FONT (CAR IL:WINDOW))
                     (COND
                        ((OR (IL:IGREATERP (IL:PLUS (IL:|fetch| IL:X0 IL:|of| IL:SEL)
                                                  (IL:CHARWIDTH BYTE IL:FONT))
                                    (IL:IDIFFERENCE (IL:|fetch| (IL:TEXTOBJ IL:WRIGHT)
                                                       IL:|of| IL:TEXTOBJ)
                                           8))
                             (IL:IEQP BYTE (IL:CHARCODE IL:CR)))
                                                             (IL:* IL:\; 
                                          "gone off the edge of the line reformat and add new line")
                         (IL:TEDIT.UPDATE.SCREEN IL:TEXTOBJ)
                         (IL:\\FIXSEL IL:SEL IL:TEXTOBJ (CAR IL:WINDOW))
                         (IL:SETQ IL:L1 (CAR (IL:|fetch| IL:L1 IL:|of| IL:SEL)))
                         (IL:SETQ IL:LN (CAR (IL:|fetch| IL:LN IL:|of| IL:SEL)))
                         (COND
                            ((OR (NULL (IL:SELECTQ (IL:|fetch| IL:POINT IL:|of| IL:SEL)
                                             (IL:LEFT IL:L1)
                                             (IL:RIGHT IL:LN)
                                             NIL))
                                 (IL:ILEQ (IL:SELECTQ (IL:|fetch| IL:POINT IL:|of| IL:SEL)
                                                (IL:LEFT (IL:|fetch| IL:YBOT IL:|of| IL:L1))
                                                (IL:RIGHT (IL:|fetch| IL:YBOT IL:|of| IL:LN))
                                                0)
                                        (IL:|fetch| (IL:REGION IL:BOTTOM)
                                           IL:|of| (IL:DSPCLIPPINGREGION NIL (CAR IL:WINDOW)))))
                                                             (IL:* IL:\; 
  "The caret is off-window in the selection window.  Need to scroll it up so the caret is visible.")
                             (IL:|while| (IL:ILESSP (IL:|fetch| IL:Y0 IL:|of| IL:SEL)
                                                    (IL:|fetch| (IL:TEXTOBJ IL:WBOTTOM)
                                                       IL:|of| IL:TEXTOBJ))
                                IL:|do|                  (IL:* IL:\; 
                                                "The caret just went off-screen.  Move it up some.")
                                      (IL:|replace| (IL:TEXTOBJ IL:EDITOPACTIVE) IL:|of|
                                                                                     IL:TEXTOBJ
                                         IL:|with| NIL)
                                      (IL:SCROLLW (CAR IL:WINDOW)
                                             0
                                             (IL:LLSH (COND
                                                         ((IL:SELECTQ (IL:|fetch| IL:POINT
                                                                         IL:|of| IL:SEL)
                                                                (IL:LEFT IL:L1)
                                                                (IL:RIGHT IL:LN)
                                                                NIL)
                                                          (IL:|fetch| IL:LHEIGHT
                                                             IL:|of| (IL:SELECTQ (IL:|fetch|
                                                                                      IL:POINT
                                                                                        IL:|of|
                                                                                        IL:SEL)
                                                                               (IL:LEFT IL:L1)
                                                                               (IL:RIGHT IL:LN)
                                                                               (IL:SHOULDNT))))
                                                         (T 12))
                                                    1))))))
                        (T (IL:TEDIT.DISPLAYTEXT IL:TEXTOBJ BYTE (IL:CHARWIDTH BYTE IL:FONT)
                                  IL:CURLINE
                                  (IL:|fetch| IL:X0 IL:|of| IL:SEL)
                                  (CAR IL:WINDOW)
                                  IL:SEL)                    (IL:* IL:\; 
                                                           "Print out the character on the screen")
                           (IL:|add| (IL:|fetch| IL:X0 IL:|of| IL:SEL)
                                  (IL:CHARWIDTH BYTE IL:FONT))

                           (IL:* IL:|;;| "And move the selection's notion of our X position to the right to account for that character's width.")

                           (IL:|replace| IL:XLIM IL:|of| IL:SEL IL:|with| (IL:|fetch|
                                                                                       IL:X0
                                                                                         IL:|of|
                                                                                         IL:SEL))))

(IL:* IL:|;;;| "Fix up the TEXTSTREAM so that the FILEPTR looks like it ought to after the BOUT, even though we've been updating the screen (which usually moves the fileptr....)")

                     (IL:SETQ IL:PS (IL:|ffetch| (IL:PIECE IL:PSTR) IL:|of|
                                                                        (IL:SETQ IL:PC
                                                                         (IL:|fetch| (IL:TEXTOBJ
                                                                                          
                                                                                        IL:\\INSERTPC
                                                                                          )
                                                                            IL:|of| IL:TEXTOBJ)))
                      )                                      (IL:* IL:\; 
                            "This piece resides in a STRING.  Because it's newly 'typed' material.")
                     (IL:|replace| (IL:TEXTSTREAM IL:PIECE) IL:|of| STREAM IL:|with|
                                                                                   IL:PC)
                                                             (IL:* IL:\; 
                                                           "Remember the current piece for others.")
                                                             (IL:* IL:\; 
                                                           "And which number piece this is.")
                     (IL:|freplace| (STREAM IL:CPPTR) IL:|of| STREAM
                        IL:|with| (IL:ADDBASE (IL:|ffetch| (IL:STRINGP IL:BASE) IL:|of|
                                                                                        IL:PS)
                                             (IL:LRSH (IL:SETQ IL:OFFST (IL:|ffetch| (IL:STRINGP
                                                                                          IL:OFFST)
                                                                           IL:|of| IL:PS))
                                                    1)))     (IL:* IL:\; 
                        "Pointer to the actual characters in the string (allowing for substrings.)")
                     (IL:|freplace| (STREAM IL:CPAGE) IL:|of| STREAM IL:|with| 0)
                     (IL:|freplace| (STREAM IL:COFFSET) IL:|of| STREAM
                        IL:|with| (IL:IPLUS (IL:|freplace| (IL:TEXTSTREAM IL:PCSTARTCH)
                                                   IL:|of| STREAM IL:|with| (LOGAND 1 
                                                                                           IL:OFFST))
                                             (IL:|fetch| (IL:TEXTOBJ IL:\\INSERTLEN) IL:|of|
                                                                                         IL:TEXTOBJ))
                            )
                     (IL:|freplace| (IL:TEXTSTREAM IL:PCSTARTPG) IL:|of| STREAM IL:|with|
                                                                                        0)
                                                             (IL:* IL:\; 
                                                 "Page # within the 'file' where this piece starts")
                     (IL:|freplace| (STREAM IL:CBUFSIZE) IL:|of| STREAM
                        IL:|with| (IL:|fetch| (STREAM IL:COFFSET) IL:|of| STREAM))
                     (IL:|freplace| (STREAM IL:EPAGE) IL:|of| STREAM IL:|with| 1)
                     (IL:|freplace| (IL:TEXTSTREAM IL:CHARSLEFT) IL:|of| STREAM IL:|with|
                                                                                        0)
                                                             (IL:* IL:\; 
                                                        "We're, perforce, at the end of the piece.")
                     (IL:|freplace| (IL:TEXTSTREAM IL:REALFILE) IL:|of| STREAM IL:|with|
                                                                                       NIL)
                                                             (IL:* IL:\; "We're not on a file....")
                 )))))
)
(IL:DEFINEQ

(IL:TEDITSTREAM.INIT
  (IL:LAMBDA (IL:WINDOW IL:MENUFN)               (IL:* IL:\; "Edited 12-Jun-90 18:01 by mitani")

    (IL:* IL:|;;| "Initialize and return TEDIT TEXTSTREAM")

    (PROG* ((IL:TEXTSTREAM (IL:OPENTEXTSTREAM NIL IL:WINDOW NIL NIL))
            (IL:TEXTOBJ (IL:TEXTOBJ IL:TEXTSTREAM)))         (IL:* IL:\; 
                                           "force shift select typein to be put in keyboard buffer")
           (IL:TEXTPROP IL:TEXTSTREAM 'IL:COPYBYBKSYSBUF T)
           (IL:|replace| (STREAM IL:STRMBOUTFN) IL:|of| IL:TEXTSTREAM IL:|with|
                                                                              'IL:\\TEXTSTREAMBOUT)
           (IL:|replace| SET IL:|of| (IL:|fetch| (IL:TEXTOBJ IL:SEL) IL:|of| 
                                                                                       IL:TEXTOBJ)
              IL:|with| T)
           (IL:|replace| IL:L1 IL:|of| (IL:|fetch| (IL:TEXTOBJ IL:SEL) IL:|of| 
                                                                                         IL:TEXTOBJ)
              IL:|with| (LIST (IL:|fetch| IL:DESC IL:|of| (IL:|fetch| (IL:TEXTOBJ
                                                                                       IL:THISLINE)
                                                                         IL:|of| IL:TEXTOBJ))))
                                                             (IL:* IL:\; 
                                                  "hookup middle button menu instead of TEDIT menu")
           (IL:WINDOWPROP IL:WINDOW 'IL:TEDIT.TITLEMENUFN IL:MENUFN)
           (RETURN IL:TEXTSTREAM))))

(IL:TEDITCHAT.MENUFN
  (IL:LAMBDA (IL:WINDOW)                                     (IL:* IL:|| "20-Oct-86 15:03")
    (DECLARE (IL:GLOBALVARS IL:TEDITCHAT.MENU)
           (IL:SPECVARS IL:WINDOW IL:STATE))                 (IL:* IL:MIDDLEBUTTON)
    (PROG ((IL:STATE (IL:WINDOWPROP IL:WINDOW 'IL:CHATSTATE))
           IL:COMMAND)
          (COND
             ((NOT IL:STATE)                                 (IL:* IL:N\o IL:|Connection| 
                                                             IL:|here;| IL:|try| IL:|to| 
                                                             IL:|reestablish|)
              (RETURN (COND
                         ((IL:LASTMOUSESTATE IL:MIDDLE)
                          (IL:CHAT.RECONNECT IL:WINDOW))
                         (T (IL:TOTOPW IL:WINDOW))))))
          (IL:|replace| (IL:CHAT.STATE IL:HELD) IL:|of| IL:STATE IL:|with| T)
          (IL:\\CHECKCARET IL:WINDOW)
          (IL:SELECTQ (IL:SETQ IL:COMMAND (IL:MENU (OR IL:TEDITCHAT.MENU (IL:SETQ IL:TEDITCHAT.MENU
                                                                          (IL:|create| IL:MENU
                                                                                 IL:ITEMS IL:_ 
                                                                               IL:TEDITCHAT.MENUITEMS
                                                                                 )))))
                (IL:|Close| (IL:|replace| (IL:CHAT.STATE IL:RUNNING?) IL:|of| IL:STATE
                               IL:|with| 'IL:CLOSE)          (IL:* IL:|Ask| IL:CHAT.TYPEIN IL:|to| 
                                                             IL:|shut| IL:|things| IL:|down.|)
                            )
                (IL:|New| (IL:|replace| (IL:CHAT.STATE IL:RUNNING?) IL:|of| IL:STATE
                             IL:|with| 'IL:CLOSE)
                          (IL:WINDOWPROP IL:WINDOW 'IL:KEEPCHAT 'IL:NEW))
                (IL:|Suspend| (IL:|replace| (IL:CHAT.STATE IL:RUNNING?) IL:|of| IL:STATE
                                 IL:|with| 'IL:CLOSE)
                              (IL:WINDOWPROP IL:WINDOW 'IL:KEEPCHAT T))
                (IL:|Freeze|                                 (IL:* IL:|Leave| IL:|in| IL:HELD 
                                                             IL:|state|)
                             (RETURN))
                (NIL)
                (IL:APPLY* IL:COMMAND IL:STATE IL:WINDOW))
          (IL:|replace| (IL:CHAT.STATE IL:HELD) IL:|of| IL:STATE IL:|with| NIL))))
)



(IL:* IL:\; "TEDIT update routines")

(IL:DEFINEQ

(IL:TEDIT.DISPLAYTEXT
  (IL:LAMBDA (IL:TEXTOBJ IL:CH IL:CHWIDTH IL:LINE IL:XPOINT IL:DS IL:SEL)
                                                     (IL:* IL:\; "Edited 12-Jun-90 18:01 by mitani")
                                                             (IL:* IL:|This| IL:|function| 
                                                           IL:|does| IL:|the| IL:|actual| 
                                                           IL:|displaying| IL:|of| 
                                                           IL:|typed-in| IL:|text| IL:|on| 
                                                           IL:|the| IL:|edit| IL:|window.|)
    (PROG ((IL:LOOKS (IL:\\TEDIT.APPLY.STYLES (IL:|fetch| (IL:TEXTOBJ IL:CARETLOOKS) IL:|of|
                                                                                         IL:TEXTOBJ)
                            (IL:|fetch| (IL:TEXTOBJ IL:\\INSERTPC) IL:|of| IL:TEXTOBJ)
                            IL:TEXTOBJ))
           (IL:TERMSA (IL:|fetch| (IL:TEXTOBJ IL:TXTTERMSA) IL:|of| IL:TEXTOBJ))
           IL:DY IL:FONT)
          (IL:MOVETO IL:XPOINT (IL:IPLUS (IL:|fetch| IL:YBASE IL:|of| IL:LINE)
                                      (OR (IL:|fetch| IL:CLOFFSET IL:|of| IL:LOOKS)
                                          0))
                 IL:DS)                                      (IL:* IL:|Set| IL:|the| IL:|display| 
                                                           IL:|stream| IL:|position|)
          (COND
             (IL:TERMSA                                      (IL:* IL:|Special| IL:|terminal| 
                                                           IL:|table| IL:|for| IL:|controlling| 
                                                           IL:|character| IL:|display.|
                                                           IL:|Use| IL:|it.|)
                    (IL:RESETLST
                        (IL:RESETSAVE IL:\\PRIMTERMSA IL:TERMSA)
                        (IL:|replace| (IL:TEXTSTREAM IL:REALFILE) IL:|of| (IL:|fetch|
                                                                                   (IL:TEXTOBJ 
                                                                                        IL:STREAMHINT
                                                                                          )
                                                                                     IL:|of|
                                                                                     IL:TEXTOBJ)
                           IL:|with| IL:DS)
                        (COND
                           ((IL:STRINGP IL:CH)
                            (IL:|for| IL:CHAR IL:|instring| IL:CH
                               IL:|do| (IL:SELCHARQ IL:CHAR
                                                 (IL:TAB     (IL:* IL:|Put| IL:|down| IL:|white|)
                                                         (IL:BITBLT NIL 0 0 IL:DS IL:XPOINT
                                                                (IL:|fetch| IL:YBOT IL:|of|
                                                                                        IL:LINE)
                                                                36
                                                                (IL:|fetch| IL:LHEIGHT
                                                                   IL:|of| IL:LINE)
                                                                'IL:TEXTURE
                                                                'IL:REPLACE IL:WHITESHADE)
                                                         (IL:RELMOVETO 36 0 IL:DS))
                                                 (IL:CR (IL:BITBLT NIL 0 0 IL:DS IL:XPOINT
                                                               (IL:|fetch| IL:YBOT IL:|of|
                                                                                       IL:LINE)
                                                               (IL:IMAX 6 (IL:CHARWIDTH IL:CHAR 
                                                                                 IL:FONT))
                                                               (IL:|fetch| IL:LHEIGHT
                                                                  IL:|of| IL:LINE)
                                                               'IL:TEXTURE
                                                               'IL:REPLACE IL:WHITESHADE))
                                                 (IL:\\DSPPRINTCHAR (IL:|fetch| (IL:TEXTOBJ
                                                                                     IL:STREAMHINT)
                                                                       IL:|of| IL:TEXTOBJ)
                                                        IL:CHAR))))
                           (T (IL:SELCHARQ IL:CH
                                    (IL:TAB                  (IL:* IL:|Put| IL:|down| IL:|white|)
                                            (IL:BITBLT NIL 0 0 IL:DS IL:XPOINT (IL:|fetch| 
                                                                                      IL:YBOT
                                                                                  IL:|of| IL:LINE
                                                                                      )
                                                   36
                                                   (IL:|fetch| IL:LHEIGHT IL:|of| IL:LINE)
                                                   'IL:TEXTURE
                                                   'IL:REPLACE IL:WHITESHADE)
                                            (IL:RELMOVETO 36 0 IL:DS))
                                    (IL:CR (IL:BITBLT NIL 0 0 IL:DS IL:XPOINT (IL:|fetch| IL:YBOT
                                                                                 IL:|of| IL:LINE)
                                                  (IL:IMAX 6 (IL:CHARWIDTH IL:CH IL:FONT))
                                                  (IL:|fetch| IL:LHEIGHT IL:|of| IL:LINE)
                                                  'IL:TEXTURE
                                                  'IL:REPLACE IL:WHITESHADE))
                                    (IL:\\DSPPRINTCHAR (IL:|fetch| (IL:TEXTOBJ IL:STREAMHINT)
                                                          IL:|of| IL:TEXTOBJ)
                                           IL:CH))))))
             (T                                              (IL:* IL:N\o IL:|special| 
                                                           IL:|handling;| IL:|just| IL:|use| 
                                                           IL:|native| IL:|character| 
                                                           IL:|codes|)
                (COND
                   ((IL:STRINGP IL:CH)
                    (IL:|for| IL:CHAR IL:|instring| IL:CH
                       IL:|do| (IL:SELCHARQ IL:CHAR
                                         (IL:TAB             (IL:* IL:|Put| IL:|down| IL:|white|)
                                                 (IL:BITBLT NIL 0 0 IL:DS (IL:DSPXPOSITION NIL IL:DS)
                                                        (IL:|fetch| IL:YBOT IL:|of| IL:LINE)
                                                        36
                                                        (IL:|fetch| IL:LHEIGHT IL:|of| 
                                                                                         IL:LINE)
                                                        'IL:TEXTURE
                                                        'IL:REPLACE IL:WHITESHADE)
                                                 (IL:RELMOVETO 36 0 IL:DS))
                                         (IL:CR (IL:BITBLT NIL 0 0 IL:DS (IL:DSPXPOSITION NIL IL:DS)
                                                       (IL:|fetch| IL:YBOT IL:|of| IL:LINE)
                                                       (IL:IMAX 6 (IL:CHARWIDTH IL:CHAR IL:FONT))
                                                       (IL:|fetch| IL:LHEIGHT IL:|of| IL:LINE
                                                              )
                                                       'IL:TEXTURE
                                                       'IL:REPLACE IL:WHITESHADE))
                                         (IL:BLTCHAR IL:CHAR IL:DS))))
                   (T (IL:SELCHARQ IL:CH
                            (IL:TAB                          (IL:* IL:|Put| IL:|down| IL:|white|)
                                    (IL:BITBLT NIL 0 0 IL:DS (IL:DSPXPOSITION NIL IL:DS)
                                           (IL:|fetch| IL:YBOT IL:|of| IL:LINE)
                                           36
                                           (IL:|fetch| IL:LHEIGHT IL:|of| IL:LINE)
                                           'IL:TEXTURE
                                           'IL:REPLACE IL:WHITESHADE)
                                    (IL:RELMOVETO 36 0 IL:DS))
                            (IL:CR                           (IL:* IL:|Blank| IL:|out| IL:|the| 
                                                           IL:|CR's| IL:|width.|)
                                   (IL:BITBLT NIL 0 0 IL:DS (IL:DSPXPOSITION NIL IL:DS)
                                          (IL:|fetch| IL:YBOT IL:|of| IL:LINE)
                                          (IL:IMAX 6 (IL:CHARWIDTH IL:CH IL:FONT))
                                          (IL:|fetch| IL:LHEIGHT IL:|of| IL:LINE)
                                          'IL:TEXTURE
                                          'IL:REPLACE IL:WHITESHADE))
                            (IL:BLTCHAR IL:CH IL:DS)))))))))
)
(IL:DECLARE\: IL:DOEVAL@COMPILE IL:DONTCOPY

(IL:GLOBALVARS IL:TEDITCHAT.MENU IL:CHAT.DRIVERTYPES IL:CHAT.DISPLAYTYPES)
)

(IL:RPAQQ IL:TEDITCHAT.MENUITEMS
          ((IL:|Close| 'IL:|Close| "Closes the connection and returns")
           (IL:|Suspend| 'IL:|Suspend| "Closes the connection but leaves window up")
           (IL:|New| 'IL:|New| "Closes this connection and prompts for a new host")
           (IL:|Freeze| 'IL:|Freeze| "Holds typeout in this window until you bug it again")
           ("Dribble" (IL:FUNCTION IL:CHAT.TYPESCRIPT)
                  "Starts a typescript of window typeout")
           ("Input" (IL:FUNCTION IL:CHAT.TAKE.INPUT)
                  "Allows input from a file")
           ("Option" (IL:FUNCTION IL:DO.CHAT.OPTION)
                  "Do protocol specific option")))

(IL:RPAQQ IL:TEDITCHAT.MENU NIL)

(IL:ADDTOVAR IL:CHAT.DRIVERTYPES (IL:TEDIT IL:TEDITCHAT.CHARFN IL:NILL))
(IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY 

(IL:FILESLOAD (IL:SOURCE)
       IL:CHATDECLS)
)
(IL:PUTPROPS IL:TEDITCHAT IL:COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1990 1994))
(IL:DECLARE\: IL:DONTCOPY
  (IL:FILEMAP (NIL (1308 15667 (IL:TEDITCHAT.CHARFN 1321 . 2481) (IL:\\TEXTSTREAMBOUT 2483 . 15665)) (
15668 20008 (IL:TEDITSTREAM.INIT 15681 . 17389) (IL:TEDITCHAT.MENUFN 17391 . 20006)) (20054 30055 (
IL:TEDIT.DISPLAYTEXT 20067 . 30053)))))
IL:STOP
