(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)

(FILECREATED " 1-Feb-2022 17:00:03" 
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>LOOKUPINFILES.;2 32247  

      :CHANGES-TO (FNS MakeLookupWindow ShowLookUpString)

      :PREVIOUS-DATE "23-Feb-89 13:20:33" 
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>LOOKUPINFILES.;1)


(* ; "
Copyright (c) 1986, 1988-1989 by Xerox Corporation.
")

(PRETTYCOMPRINT LOOKUPINFILESCOMS)

(RPAQQ LOOKUPINFILESCOMS
       (

(* ;;; "Fast lookup in files")

        (LOCALVARS . T)
        (SPECVARS PROMPTWINDOW)
        (FNS AddFileToList DeleteFileFromList Lookup-CacheFile Lookup-CacheFiles Lookup-EditFile 
             Lookup-KillProcess Lookup-MakeIconWindow Lookup-RecacheFile Lookup-RightbuttonFn 
             Lookup-CacheFile Lookup-RightbuttonFn Lookup-StartProcess Lookup-TitleMenuFn 
             Lookup-WhenClosedFn Lookup-WhenOpenedFn LookupAttachedMenu LookupString MakeLookupWindow
             ShowLookUpString)
        (FUNCTIONS Lookup-Notify busy-protect)
        (VARS *LookupPrompt* DEFAULT-LOOKUP-BITMAP DEFAULT-LOOKUP-MASK
              (LOOKUP-DEFAULT-EDITREGION (CREATEREGION 300 300 400 200))
              (LOOKUP-DEFAULT-ICONPOSITION (CREATEPOSITION 300 300)))
        (GLOBALVARS *LookupPrompt* DEFAULT-LOOKUP-BITMAP DEFAULT-LOOKUP-MASK 
               LOOKUP-DEFAULT-EDITREGION LOOKUP-DEFAULT-ICONPOSITION)
        (DECLARE%: DONTCOPY (RECORDS Lookup-CacheRecord))))



(* ;;; "Fast lookup in files")

(DECLARE%: DOEVAL@COMPILE DONTCOPY

(LOCALVARS . T)
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(SPECVARS PROMPTWINDOW)
)
(DEFINEQ

(AddFileToList
  [LAMBDA (WINDOW)                                       (* ; "Edited 26-Jan-89 10:24 by dgb:")
    (LET* (entry fullname (OLD.TTYPROCESS (TTY.PROCESS (THIS.PROCESS)))
                 (OLDDISPLAYSTREAM (TTYDISPLAYSTREAM WINDOW)))
          (busy-protect WINDOW "adding file to list"
                 (LET ((fileName (TTYIN "New File: " NIL NIL '(STRING NORAISE)
                                        NIL NIL NIL NIL)))
                      (TTY.PROCESS T)
                      (Lookup-Notify WINDOW T "Trying to add " fileName T)
                      (COND
                         ((SETQ fullname (FULLNAME fileName))
                          [WINDOWPROP WINDOW 'FileList (CONS fileName (WINDOWPROP WINDOW 'FileList]
                          [WINDOWPROP WINDOW 'CacheForFiles
                                 (CONS (SETQ entry (create Lookup-CacheRecord
                                                          fileName _ fullname
                                                          originalFileName _ fileName))
                                       (WINDOWPROP WINDOW 'CacheForFiles]
                          (Lookup-CacheFile entry WINDOW)
                          (Lookup-Notify WINDOW "Caching done" T))
                         (fileName (Lookup-Notify WINDOW T fileName " not found." T])

(DeleteFileFromList
  [LAMBDA (window)                                       (* ; "Edited 26-Jan-89 21:37 by dgb:")
    (LET* [(ITEMS (WINDOWPROP window 'CacheForFiles]
          (CL:IF ITEMS
              [busy-protect window "deleting file from list"
                     (LET* [(CHOSEN (MENU (create MENU
                                                 ITEMS _ (for ITEM in ITEMS
                                                            collect (LIST (fetch 
                                                                                     originalFileName
                                                                                 of ITEM)
                                                                              (KWOTE ITEM]
                           (CL:WHEN CHOSEN
                               (WINDOWPROP window 'CacheForFiles (REMOVE CHOSEN ITEMS))
                               [WINDOWPROP window 'FileList (REMOVE (fetch originalFileName
                                                                       of CHOSEN)
                                                                   (WINDOWPROP window 'FileList])]
              (Lookup-Notify window "No files"))])

(Lookup-CacheFile
  [LAMBDA (entry msgStream window)                       (* ; "Edited 23-Feb-89 13:04 by dgb:")
    (LET* (localFile strm textStream (file (fetch fileName of entry)))
          (WINDOWPROP window 'lastFileIndex NIL)
          (WINDOWPROP window 'lastEntryIndex NIL)
          (CL:WHEN file
              (SETQ localFile (PACKFILENAME.STRING 'HOST 'NODIRCORE 'VERSION NIL 'BODY file))
              (SETQ file (PACKFILENAME 'VERSION NIL 'BODY file))
              (Lookup-Notify msgStream "Looking for: " (FILENAMEFIELD file 'NAME)
                     T)
              (COND
                 ((FINDFILE file)
                  (Lookup-Notify msgStream "Caching: " (FILENAMEFIELD file 'NAME)
                         T)
                  (create Lookup-CacheRecord smashing entry fileName _ file openStream _
                                                       (SETQ strm (OPENSTREAM (COPYFILE file 
                                                                                     localFile)
                                                                         'INPUT))
                                                       textStream _ (SETQ textStream (OPENTEXTSTREAM
                                                                                      strm))
                                                       textLength _ (fetch TEXTLEN
                                                                       of (TEXTOBJ textStream))
                                                       originalFileName _ (fetch originalFileName
                                                                             of entry)))
                 (T (SETQ localFile NIL)
                    (Lookup-Notify msgStream file " not found" T)
                    (create Lookup-CacheRecord smashing entry fileName _ file))))])

(Lookup-CacheFiles
  [LAMBDA (WINDOW)                                       (* ; "Edited 26-Jan-89 21:09 by dgb:")

(* ;;; "Cache the files in core")

    (busy-protect WINDOW "caching files."
           (LET* [(CACHE NIL)
                  (OLDCACHE (WINDOWPROP WINDOW 'CacheForFiles))
                  (FILELIST (CL:IF OLDCACHE
                                (for ITEM in OLDCACHE collect (fetch originalFileName
                                                                             of ITEM))
                                (WINDOWPROP WINDOW 'FileList))]
                 (WINDOWPROP WINDOW 'FileList FILELIST)
                 (WINDOWPROP WINDOW 'CacheForFiles NIL)
                 (Lookup-Notify WINDOW T "Caching files in core..." T)
                 [for file in FILELIST
                    do (LET ((FULLNAME (FULLNAME file)))
                                (if FULLNAME
                                    then (CL:PUSH (create Lookup-CacheRecord
                                                             fileName _ FULLNAME
                                                             originalFileName _ file)
                                                    CACHE)
                                  else (Lookup-Notify WINDOW file " not found" T]
                 (for entry in CACHE do (Lookup-CacheFile entry WINDOW WINDOW))
                 (Lookup-Notify WINDOW T "Caching done" T)
                 (WINDOWPROP WINDOW 'CacheForFiles (REVERSE CACHE])

(Lookup-EditFile
  [LAMBDA (window)                                       (* ; "Edited 26-Jan-89 15:53 by dgb:")
    (LET* [[file (COND
                    [(WINDOWPROP window 'lastFileIndex)
                     (CAR (NTH (WINDOWPROP window 'FileList)
                               (WINDOWPROP window 'lastFileIndex]
                    (T (LET [(ITEMS (WINDOWPROP window 'CacheForFiles]
                            (CL:IF ITEMS
                                [MENU (create MENU
                                             ITEMS _ (for ITEM in ITEMS
                                                        collect (LIST (fetch originalFileName
                                                                             of ITEM)
                                                                          (KWOTE (fetch fileName
                                                                                    of ITEM]
                                (PROGN (Lookup-Notify window "No files")
                                       NIL))]
           [w (AND file (TEDIT (MKATOM file]
           (n (WINDOWPROP window 'lastEntryIndex]
          (AND file n (TEDIT.NORMALIZECARET w (TEDIT.SETSEL w n 0)))
          w])

(Lookup-KillProcess
  [LAMBDA (WINDOW)                                       (* ; "Edited 23-Nov-88 13:03 by dgb:")

(* ;;; "Kill the lookup process associated with the window")

    (LET* [(PROMPT (GETPROMPTWINDOW WINDOW))
           (PROC (WINDOWPROP PROMPT 'PROCESS]
          (WINDOWPROP PROMPT 'PROCESS NIL)
          (WINDOWPROP WINDOW 'lookupProcess NIL)
          (COND
             ((PROCESSP PROC)
              (AND (TTY.PROCESSP PROC)
                   (TTY.PROCESS T))
              (DEL.PROCESS PROC)
              (PROCESSPROP PROC 'PROCWINDOW NIL])

(Lookup-MakeIconWindow
  [LAMBDA (window iconBM iconMask iconPosition icontitle)(* ; "Edited 26-Jan-89 15:33 by dgb:")
    (OR iconBM (SETQ iconBM DEFAULT-LOOKUP-BITMAP)
        (SETQ iconMask DEFAULT-LOOKUP-MASK))
    (LET [(ICONWINDOW (COND
                         (icontitle (TITLEDICONW (create TITLEDICON
                                                        ICON _ iconBM
                                                        MASK _ iconMask
                                                        TITLEREG _ (CREATEREGION 2 2
                                                                          (- (BITMAPWIDTH iconBM)
                                                                             4)
                                                                          26))
                                           icontitle DEFAULTICONFONT (OR iconPosition 
                                                                         LOOKUP-DEFAULT-ICONPOSITION)
                                           T))
                         (T (ICONW iconBM iconMask (OR iconPosition LOOKUP-DEFAULT-ICONPOSITION)
                                   T]

(* ;;; "Make icon for this window")

         (WINDOWPROP window 'ICON ICONWINDOW)
         (WINDOWPROP ICONWINDOW 'CLOSEFN (FUNCTION (LAMBDA (W)
                                                     (LET [(MAIN (WINDOWPROP W 'ICONFOR]
                                                          (EXPANDW W])

(Lookup-RecacheFile
  [LAMBDA (WINDOW)                                       (* ; "Edited 26-Jan-89 21:01 by dgb:")
    (busy-protect WINDOW "recaching a file." (LET [(index (WINDOWPROP WINDOW 'lastFileIndex]
                                                  (CLEARW (GETPROMPTWINDOW WINDOW))
                                                  (COND
                                                     (index (Lookup-Notify WINDOW "Recaching" T)
                                                            (Lookup-CacheFile
                                                             (CAR (NTH (WINDOWPROP WINDOW
                                                                              'CacheForFiles)
                                                                       index))
                                                             WINDOW WINDOW)
                                                            (Lookup-Notify WINDOW "Caching done" T)
                                                            (CL:WHEN (OPENWP WINDOW)
                                                                (ShowLookUpString
                                                                 (WINDOWPROP WINDOW 'searchString)
                                                                 WINDOW index 0)))
                                                     (T (Lookup-Notify WINDOW T "No file selected" T])

(Lookup-RightbuttonFn
  [LAMBDA (W s)                                          (* ; "Edited 26-Jan-89 21:24 by dgb:")
    (SELECTQ [MENU (create MENU
                          ITEMS _ '(Move Shape Close Redisplay Shrink]
        (Move (MOVEW W))
        (Shape (SHAPEW W))
        (Close (CL:IF (PROGN (CLEARW W)
                             (MOUSECONFIRM "Are you sure you want
to close this Lookup window?
" NIL W T))(PROGN (Lookup-KillProcess W)
                  (CLOSEW W))
                   (REDISPLAYW W NIL T)))
        (Redisplay (REDISPLAYW W NIL T))
        (Shrink (SHRINKW W))
        NIL])

(Lookup-CacheFile
  [LAMBDA (entry msgStream window)                       (* ; "Edited 23-Feb-89 13:04 by dgb:")
    (LET* (localFile strm textStream (file (fetch fileName of entry)))
          (WINDOWPROP window 'lastFileIndex NIL)
          (WINDOWPROP window 'lastEntryIndex NIL)
          (CL:WHEN file
              (SETQ localFile (PACKFILENAME.STRING 'HOST 'NODIRCORE 'VERSION NIL 'BODY file))
              (SETQ file (PACKFILENAME 'VERSION NIL 'BODY file))
              (Lookup-Notify msgStream "Looking for: " (FILENAMEFIELD file 'NAME)
                     T)
              (COND
                 ((FINDFILE file)
                  (Lookup-Notify msgStream "Caching: " (FILENAMEFIELD file 'NAME)
                         T)
                  (create Lookup-CacheRecord smashing entry fileName _ file openStream _
                                                       (SETQ strm (OPENSTREAM (COPYFILE file 
                                                                                     localFile)
                                                                         'INPUT))
                                                       textStream _ (SETQ textStream (OPENTEXTSTREAM
                                                                                      strm))
                                                       textLength _ (fetch TEXTLEN
                                                                       of (TEXTOBJ textStream))
                                                       originalFileName _ (fetch originalFileName
                                                                             of entry)))
                 (T (SETQ localFile NIL)
                    (Lookup-Notify msgStream file " not found" T)
                    (create Lookup-CacheRecord smashing entry fileName _ file))))])

(Lookup-RightbuttonFn
  [LAMBDA (W s)                                          (* ; "Edited 26-Jan-89 21:24 by dgb:")
    (SELECTQ [MENU (create MENU
                          ITEMS _ '(Move Shape Close Redisplay Shrink]
        (Move (MOVEW W))
        (Shape (SHAPEW W))
        (Close (CL:IF (PROGN (CLEARW W)
                             (MOUSECONFIRM "Are you sure you want
to close this Lookup window?
" NIL W T))(PROGN (Lookup-KillProcess W)
                  (CLOSEW W))
                   (REDISPLAYW W NIL T)))
        (Redisplay (REDISPLAYW W NIL T))
        (Shrink (SHRINKW W))
        NIL])

(Lookup-StartProcess
  [LAMBDA (WINDOW)                                       (* ; "Edited 23-Nov-88 13:26 by dgb:")
    (AND (OPENWP WINDOW)
         [NOT (PROCESSP (WINDOWPROP (GETPROMPTWINDOW WINDOW)
                               'PROCESS]
         (COND
            ((WINDOWPROP WINDOW 'BUSYACTION)
             (CLEARW WINDOW)
             (PRINTOUT WINDOW T "Busy with " (WINDOWPROP WINDOW 'BUSYACTION)
                    T)

             (* ;; "don't start process")

             NIL)
            (T T))
         (ADD.PROCESS `(LookupString ,WINDOW)
                'NAME
                (WINDOWPROP WINDOW 'ProcessName)
                'WINDOW
                (GETPROMPTWINDOW WINDOW])

(Lookup-TitleMenuFn
  [LAMBDA (window)                                       (* ; "Edited 25-Jan-89 09:57 by dgb:")
    (SELECTQ [MENU (if (WINDOWPROP window 'lastFileIndex)
                       then [LOADTIMECONSTANT (create
                                                   MENU
                                                   ITEMS _ '(["Edit file named in window title"
                                                              'Edit "Edit file named in window title"
                                                              (SUBITEMS ("Select file to edit"
                                                                         'EditFile]
                                                             ("Add new file" 'AddFile 
                                                                    "Add specified file to list")
                                                             ("Delete file from list" 'DeleteFile 
                                                             "Delete file from those used for lookup"
                                                                    )
                                                             ("Recache file named in window title"
                                                              'RecacheFile 
                                                              "Recache file named in window title"
                                                              (SUBITEMS ("Recache all files"
                                                                         'Recache]
                     else (LOADTIMECONSTANT (create MENU
                                                       ITEMS _ '(("Select file to edit" 'EditFile 
                                                                     "Make choice from current files"
                                                                        )
                                                                 ("Add new file" 'AddFile 
                                                                        "Add specified file to list")
                                                                 ("Delete file from list"
                                                                  'DeleteFile 
                                                             "Delete file from those used for lookup"
                                                                  )
                                                                 ("Recache all files" 'Recache]
        (AddFile (AddFileToList window))
        (DeleteFile (DeleteFileFromList window))
        (Recache (WINDOWPROP window 'TITLE "")
                 (CLEARW window)
                 (Lookup-CacheFiles window T))
        (RecacheFile (Lookup-RecacheFile window))
        (Edit (Lookup-EditFile window))
        (EditFile (WINDOWPROP window 'lastFileIndex NIL)
                  (WINDOWPROP window 'TITLE "")
                  (Lookup-EditFile window))
        NIL])

(Lookup-WhenClosedFn
  [LAMBDA (window)                                       (* ; "Edited 25-Jan-89 13:34 by dgb:")

(* ;;; "Kill the process associated with the window .")

    (Lookup-KillProcess window)
    (WINDOWPROP window 'CacheForFiles NIL)
    (WINDOWPROP window 'OPENFN NIL)
    window])

(Lookup-WhenOpenedFn
  [LAMBDA (WINDOW)                                       (* ; "Edited 26-Jan-89 15:56 by dgb:")

(* ;;; "The OPENFN for the lookup window")

    (WINDOWPROP WINDOW 'RIGHTBUTTONFN 'Lookup-RightbuttonFn)
    (CLEARW (GETPROMPTWINDOW WINDOW))
    (Lookup-StartProcess WINDOW])

(LookupAttachedMenu
  [LAMBDA (ITEM menu button)                             (* ; "Edited 23-Nov-88 13:05 by dgb:")
    (LET* [(WINDOW (MAINWINDOW (WFROMMENU menu)))
           (oldName (WINDOWPROP WINDOW 'searchString]
          (SELECTQ (CADR ITEM)
              (NEXT (COND
                       (oldName (Lookup-KillProcess WINDOW)
                              (PRINTOUT (GETPROMPTWINDOW WINDOW)
                                     oldName T)
                              (ShowLookUpString (WINDOWPROP WINDOW 'searchString)
                                     WINDOW
                                     (OR (NUMBERP (WINDOWPROP WINDOW 'lastFileIndex))
                                         1)
                                     (ADD1 (OR (NUMBERP (WINDOWPROP WINDOW 'lastEntryIndex))
                                               -1)))
                              (Lookup-StartProcess WINDOW))))
              (SHRINK (SHRINKW WINDOW))
              NIL])

(LookupString
  [LAMBDA (mainWindow)                                   (* ; "Edited 26-Jan-89 19:44 by dgb:")

(* ;;; "The main program for the LookupInFiles Program")

    (OPENW mainWindow)
    (LET ((w (GETPROMPTWINDOW mainWindow)))
         (CLEARW w)
         (TTYDISPLAYSTREAM w)
         (TTY.PROCESS (THIS.PROCESS))
         (bind lookup-string
            do (WINDOWPROP mainWindow 'RIGHTBUTTONFN 'Lookup-RightbuttonFn)
                  (SETQ lookup-string (RESETVAR TTYINREADMACROS '((19 T CONS))
                                       (TTYIN *LookupPrompt* NIL NIL '(STRING NORAISE)
                                              NIL NIL NIL NIL)))
                  (COND
                     ((LISTP lookup-string)
                      (SHRINKW mainWindow)
                      (PROCESS.RETURN))
                     [(NULL lookup-string)
                      (LET [(oldName (WINDOWPROP mainWindow 'searchString]
                           (if oldName
                               then (PRINTOUT w *LookupPrompt* oldName T)
                                     (ShowLookUpString oldName mainWindow (WINDOWPROP
                                                                               mainWindow
                                                                               'lastFileIndex)
                                            (ADD1 (OR (WINDOWPROP mainWindow 'lastEntryIndex)
                                                      -1]
                     (T (ShowLookUpString lookup-string mainWindow)))
            until (NOT (OPENWP w])

(MakeLookupWindow
  [LAMBDA (fileList processName editRegion iconBM iconMask iconPosition iconTitle)
                                                             (* ; "Edited  1-Feb-2022 16:59 by rmk")
                                                             (* ; "Edited 25-Jan-89 13:37 by dgb:")

    (* ;; "Compute defaults")

    (LET [(window (CREATEMENUEDWINDOW (create MENU
                                             CENTERFLG _ T
                                             MENUFONT _ '(HELVETICA 12 BOLD)
                                             ITEMS _ '(("Shrink" SHRINK "Shrink window to an icon")
                                                       ("Next Occurrence" NEXT 
                                                              "Find next occurrence of string."))
                                             WHENSELECTEDFN _ (FUNCTION LookupAttachedMenu))
                         ""
                         'TOP
                         (OR editRegion LOOKUP-DEFAULT-EDITREGION]

(* ;;; "Create Menued window with prompt")

         (GETPROMPTWINDOW window 2 '(HELVETICA 12 BOLD))

(* ;;; "Create icon")

         (Lookup-MakeIconWindow window iconBM iconMask iconPosition iconTitle)

(* ;;; "Opening starts process, and checks if caching needed")

         (WINDOWADDPROP window 'OPENFN (FUNCTION Lookup-WhenOpenedFn))
         (WINDOWADDPROP window 'EXPANDFN (FUNCTION Lookup-WhenOpenedFn))

(* ;;; "Shrinking and closing kills the process. ")

         [WINDOWPROP window 'CLOSEFN (CONS (FUNCTION Lookup-KillProcess)
                                           (WINDOWPROP window 'CLOSEFN]
         (WINDOWPROP window 'RIGHTBUTTONFN 'Lookup-RightbuttonFn)
         [WINDOWPROP window 'SHRINKFN (CONS (FUNCTION Lookup-KillProcess)
                                            (WINDOWPROP window 'SHRINKFN]

(* ;;; "Fix title menu for this TEDIT window")

         (OPENTEXTSTREAM NIL window NIL NIL '(READONLY T TEDIT.TITLEMENUFN Lookup-TitleMenuFn))
         (WINDOWPROP window 'TEDIT.TITLEMENUFN 'Lookup-TitleMenuFn)

(* ;;; "Cache FileList in Window")

         (WINDOWPROP window 'FileList (MKLIST fileList))

(* ;;; "Store name for PSW")

         (WINDOWPROP window 'ProcessName (OR processName 'Lookup))

(* ;;; "This should be default for attached window")

         (for w1 in (ALLATTACHEDWINDOWS window) do (WINDOWPROP w1 'PASSTOMAINCOMS T)
                                                   (WINDOWPROP w1 'RIGHTBUTTONFN 'NILL))
         [ADD.PROCESS `(Lookup-CacheFiles ,window]
         (SHRINKW window)
         window])

(ShowLookUpString
  [LAMBDA (name-or-string window lst-index start-pos)        (* ; "Edited  1-Feb-2022 16:59 by rmk")
                                                             (* ; "Edited 22-Nov-88 15:10 by dgb:")
    (OR lst-index (SETQ lst-index 1))
    (OR start-pos (SETQ start-pos 0))
    (WINDOWPROP window 'searchString name-or-string)
    (for elt in (NTH (WINDOWPROP window 'CacheForFiles)
                     lst-index) as file-index from lst-index bind pos openStream sel textStream
       when (SETQ openStream (fetch openStream of elt))
       do (if (NOT (OPENP openStream))
              then (OPENSTREAM openStream 'INPUT)
                   (WINDOWPROP window 'lastFileIndex NIL))
          (if (SETQ pos (FILEPOS name-or-string openStream start-pos (fetch textLength of elt)
                               NIL NIL UPPERCASEARRAY))
              then (WINDOWPROP window 'lastEntryIndex pos)
                   (SETQ sel (TEDIT.SETSEL (SETQ textStream (fetch textStream of elt))
                                    (ADD1 pos)
                                    (NCHARS name-or-string)))
                   [if (EQP file-index (WINDOWPROP window 'lastFileIndex))
                       then (TEDIT.NORMALIZECARET textStream sel)
                     else (WINDOWPROP window 'TITLE (CONCAT "Looking in: " (fetch fileName
                                                                              of elt)))
                          (WINDOWPROP window 'lastFileIndex file-index)
                          (OPENTEXTSTREAM textStream window NIL NIL '(READONLY T]
                   (RETURN (PROG1 (TEDIT.SET.SEL.LOOKS sel 'PENDINGDEL)
                                  (TEDIT.SHOWSEL textStream T sel)))
            else (SETQ start-pos 0)) finally (WINDOWPROP window 'lastFileIndex NIL)
                                           (WINDOWPROP window 'lastEntryIndex NIL)
                                           (WINDOWPROP window 'TITLE "")
                                           (TEDIT.SETSEL (OPENTEXTSTREAM (OPENSTREAMSTRING
                                                                          (CONCAT name-or-string 
                                                                                 " not found."))
                                                                window NIL NIL '(READONLY T))
                                                  1
                                                  (NCHARS name-or-string)
                                                  'RIGHT T])
)

(DEFMACRO Lookup-Notify (WINDOW &REST BODY)
   `(PRINTOUT (OR (OPENWP ,WINDOW)
                  PROMPTWINDOW)
           \, BODY))

(DEFMACRO busy-protect (WINDOW NEW-BUSY-ACTION body-form unwind-form)
   `(CL:UNLESS (WINDOWPROP ,WINDOW 'BUSYACTION)
        (CL:UNWIND-PROTECT
            (PROGN (WINDOWPROP ,WINDOW 'BUSYACTION ,NEW-BUSY-ACTION)
                   (AND (OPENWP ,WINDOW)
                        (CLEARW ,WINDOW))
                   (Lookup-KillProcess ,WINDOW)
                   ,body-form)
            ,unwind-form
            (WINDOWPROP ,WINDOW 'BUSYACTION NIL)
            (Lookup-StartProcess ,WINDOW))))

(RPAQQ *LookupPrompt* "Lookup String:  ")

(RPAQQ DEFAULT-LOOKUP-BITMAP #*(62 92)OOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLN@@@@@@@@@@@@@ALL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@OOH@@@@@@@@@LL@COON@@@@@@@@@LL@GOOO@@@@@@@@@LL@OOOOH@@@@@@@@LLAOOOOL@@@@@@@@LLAOOOOL@@@@@@@@LLAOOOOL@@@@@@@@LLCOOOON@@@@@@@@LLCOOOON@@@@@@@@LLCOOOON@@@@D@@@LLCOOOON@@@@N@A@LLCOOOON@@@AO@C@LLCOOOON@@@COHG@LLCOOOON@@@GOLO@LLAOOOOL@@@OONO@LLAOOOOL@@AOOOG@LLAOOOOL@@COOOK@LL@OOOOH@@GOOOM@LL@GOOO@@@OOOOO@LL@COON@@AOOOOO@LL@@OOH@@COOOON@LL@L@@@@@GOOOOL@LL@N@@@@@GOOOOH@LL@OON@@@COOOO@@LL@OOO@@@AOOON@@LL@OOOH@@@OOOL@@LL@OOOL@@@GOOH@@LL@OOON@@@COO@@@LL@OOOO@@@AON@@@LL@OOOOH@@@OL@@@LL@OOOOL@@NGH@@@LL@OOOON@AOC@@@@LL@OOOOO@COH@@@@LL@OOOOOHGOH@@@@LL@OOOOOLOOH@@@@LL@OOOOOOOO@@@@@LL@OOOOOOON@@@@@LL@OOOOOOOL@@@@@LL@OOOOOOOH@@@@@LL@OOONOOO@@@@@@LL@OOONGON@@@@@@LL@OOONCOL@@@@@@LL@OOONAOH@@@@@@LL@OOON@O@@@@@@@LL@GOON@F@@@@@@@LL@COON@@@@@@@@@LL@AOON@@@@@@@@@LL@@OON@@@@@@@@@LL@@GON@@@@@@@@@LL@@CON@@@@@@@@@LL@@AON@@@@@@@@@LL@@@ON@@@@@@@@@LL@@@GN@@@@@@@@@LL@@@CN@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LL@@@@@@@@@@@@@@LOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOL
)

(RPAQQ DEFAULT-LOOKUP-MASK #*(62 92)OOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOLOOOOOOOOOOOOOOOL
)

(RPAQ LOOKUP-DEFAULT-EDITREGION (CREATEREGION 300 300 400 200))

(RPAQ LOOKUP-DEFAULT-ICONPOSITION (CREATEPOSITION 300 300))
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS *LookupPrompt* DEFAULT-LOOKUP-BITMAP DEFAULT-LOOKUP-MASK LOOKUP-DEFAULT-EDITREGION 
       LOOKUP-DEFAULT-ICONPOSITION)
)
(DECLARE%: DONTCOPY 
(DECLARE%: EVAL@COMPILE

(RECORD Lookup-CacheRecord (fileName openStream textStream textLength originalFileName))
)
)
(PUTPROPS LOOKUPINFILES COPYRIGHT ("Xerox Corporation" 1986 1988 1989))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (1645 27979 (AddFileToList 1655 . 3003) (DeleteFileFromList 3005 . 4252) (
Lookup-CacheFile 4254 . 6154) (Lookup-CacheFiles 6156 . 7719) (Lookup-EditFile 7721 . 8985) (
Lookup-KillProcess 8987 . 9568) (Lookup-MakeIconWindow 9570 . 11062) (Lookup-RecacheFile 11064 . 12498
) (Lookup-RightbuttonFn 12500 . 13124) (Lookup-CacheFile 13126 . 15026) (Lookup-RightbuttonFn 15028 . 
15652) (Lookup-StartProcess 15654 . 16370) (Lookup-TitleMenuFn 16372 . 19424) (Lookup-WhenClosedFn 
19426 . 19744) (Lookup-WhenOpenedFn 19746 . 20060) (LookupAttachedMenu 20062 . 21059) (LookupString 
21061 . 22674) (MakeLookupWindow 22676 . 25328) (ShowLookUpString 25330 . 27977)) (27981 28116 (
Lookup-Notify 27981 . 28116)) (28118 28624 (busy-protect 28118 . 28624)))))
STOP
