(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED " 3-Aug-88 16:16:39" {ERINYES}<LISPUSERS>LYRIC>LISPNERD.;3 10439  

      changes to%:  (VARS LISPNERDCOMS)

      previous date%: "25-Jan-88 11:18:03" {ERINYES}<LISPUSERS>LYRIC>LISPNERD.;2)


(* "
Copyright (c) 1987, 1988 by Xerox Corporation.  All rights reserved.
")

(PRETTYCOMPRINT LISPNERDCOMS)

(RPAQQ LISPNERDCOMS
       ((COMS * LISPNERDDEPENDENCIES)
        (* must come before any FILES)
        (FILES ANALYZER DINFO HELPSYS (FROM {QV}<DICTSERVER>LISP>)
               DICTCLIENT)
        (FNS LISPNERD.INIT IRMNERD.PRINTSEARCH)
        (INITVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST (IRMNERD.MAXWORDS 50))
        (GLOBALVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST IRMNERD.MAXWORDS)
        (FNS IRMDICT.PRINTENTRY)
        (P (LISPNERD.INIT))))

(RPAQQ LISPNERDDEPENDENCIES
       [(* * code to make sure that the right versions of everything are loaded. The P must be 
           executed before any FILES commands.)
        [E (PUTPROP 'LISPNERD 'DEPENDENCIES (for FILE in (FILECOMSLST 'LISPNERD 'FILES)
                                                 collect
                                                 (CONS FILE (CAAR (GETPROP FILE 'FILEDATES]
        (PROP DEPENDENCIES LISPNERD)
        (P (for FILE FILEDATE in (GETPROP 'LISPNERD 'DEPENDENCIES)
                do
                [SETQ FILEDATE (CAAR (GETPROP (CAR FILE)
                                            'FILEDATES]
                (COND ([AND FILEDATE (CDR FILE)
                            (ILESSP (IDATE FILEDATE)
                                   (IDATE (CDR FILE]
                       (* clear FILEDATES to force FILESLOAD to reload the file.)
                       (PUTPROP (CAR FILE)
                              'FILEDATES NIL])
(* * code to make sure that the right versions of everything are loaded. The P must be executed before
 any FILES commands.)


(PUTPROPS LISPNERD DEPENDENCIES ((ANALYZER . " 3-Jun-88 17:03:38")
                                 (DINFO . " 1-Oct-87 10:11:04")
                                 (HELPSYS . " 1-Oct-87 13:40:16")
                                 (DICTCLIENT . " 8-Oct-87 15:15:08")))

[for FILE FILEDATE in (GETPROP 'LISPNERD 'DEPENDENCIES)
   do [SETQ FILEDATE (CAAR (GETPROP (CAR FILE)
                                  'FILEDATES]
      (COND
         ([AND FILEDATE (CDR FILE)
               (ILESSP (IDATE FILEDATE)
                      (IDATE (CDR FILE]                      (* clear FILEDATES to force FILESLOAD 
                                                             to reload the file.)
          (PUTPROP (CAR FILE)
                 'FILEDATES NIL]



(* must come before any FILES)


(FILESLOAD ANALYZER DINFO HELPSYS (FROM {QV}<DICTSERVER>LISP>)
       DICTCLIENT)
(DEFINEQ

(LISPNERD.INIT
  [LAMBDA NIL                                                (* jtm%: "18-Nov-87 14:36")
    (COND
       ((NULL IRMDICT)
        [Dict.Establish (SETQ IRMDICT (create Dict
                                             dictName ← 'IRMDict
                                             printEntryFn ← (FUNCTION IRMDICT.PRINTENTRY]
        (PUTASSOC 'Search% IRM '((IRMNERD.PRINTSEARCH)
                                 
                      "Searches the Interlisp Reference Manual for entries given a list of keywords."
                                 ) BackgroundMenuCommands)
        (SETQ BackgroundMenu NIL])

(IRMNERD.PRINTSEARCH
  [LAMBDA (SYNONYMCLASSES)                                   (* jtm%: " 7-Apr-87 12:33")
    (PROG (VENNDIAGRAM SELECTION MENUITEMS (MINWORD 0)
                 (MAXWORD IRMNERD.MAXWORDS))
          [COND
             ((NULL SYNONYMCLASSES)
              (CLRPROMPT)
              (PROMPTPRINT (CHARACTER (CHARCODE CR)))
              (SETQ SYNONYMCLASSES (PROMPTFORWORD "keywords to search on:" IRMNERD.LASTREQUEST NIL 
                                          PROMPTWINDOW NIL NIL (CHARCODE EOL ESCAPE LF)))
              (COND
                 ((NULL SYNONYMCLASSES)
                  (PROMPTPRINT "Aborted")
                  (RETURN))
                 (T (CLRPROMPT)))
              (COND
                 ((NOT (STREQUAL SYNONYMCLASSES IRMNERD.LASTREQUEST))
                  (SETQ IRMNERD.LASTREQUEST SYNONYMCLASSES)
                  (SETQ IRMNERD.LASTSEARCH NIL]
          [do [SETQ VENNDIAGRAM (COND
                                   ((AND IRMNERD.LASTSEARCH (EQ MINWORD 0))
                                    IRMNERD.LASTSEARCH)
                                   (T (PROMPTPRINT "
Searching . . . ")
                                      (DICTCLIENT.SEARCHFORWORD SYNONYMCLASSES 2 MINWORD MAXWORD
                                             'IRMNerd]
              (COND
                 ((EQ MINWORD 0)                             (* cache the results in case the use 
                                                             calls again.)
                  (SETQ IRMNERD.LASTSEARCH VENNDIAGRAM)))
              [COND
                 ((NULL VENNDIAGRAM)
                  (PROMPTPRINT "Sorry, no results.")
                  (FLASHWINDOW PROMPTWINDOW)
                  (RETURN))
                 ((NULL (CDR VENNDIAGRAM))
                  (SETQ MENUITEMS (CADAR VENNDIAGRAM)))
                 (T (SETQ MENUITEMS (for SET in VENNDIAGRAM
                                       collect (LIST [CONCATLIST (for ELEMENT
                                                                    on (CAR SET)
                                                                    collect (COND
                                                                               ((CDR ELEMENT)
                                                                                (CONCAT (CAR ELEMENT)
                                                                                       " "))
                                                                               (T (CAR ELEMENT]
                                                     (LIST 'QUOTE (CAR SET))
                                                     NIL
                                                     (CONS 'SUBITEMS (CADR SET]
              (CLRPROMPT)
              (SETQ SELECTION (MENU (create MENU
                                           TITLE ← "IRM Entries"
                                           ITEMS ← MENUITEMS
                                           CENTERFLG ← T)))
              (COND
                 ((NULL SELECTION)
                  (PROMPTPRINT "
No selection made.")
                  (RETURN))
                 ((LISTP SELECTION)
                  [for TAIL CLASSNAME on SELECTION
                     do (COND
                           ((EQ (NTHCHARCODE (CAR TAIL)
                                       -1)
                                (CHARCODE +))
                            (SETQ CLASSNAME (SUBSTRING (CAR TAIL)
                                                   1 -2))
                            (RPLACA TAIL (for CLASS in SYNONYMCLASSES
                                            thereis (STREQUAL (CAR CLASS)
                                                           CLASSNAME]
                  (SETQ SYNONYMCLASSES SELECTION)
                  (PROMPTPRINT "Seaching for: " SYNONYMCLASSES)
                  (SETQ MINWORD 0)
                  (SETQ MAXWORD IRMNERD.MAXWORDS))
                 ((AND (EQ 1 (STRPOS ". . .+" SELECTION))
                       (STRPOS "more" SELECTION))            (* the user asked for the next chunk.)
                  (SETQ MINWORD (ADD1 MAXWORD))
                  (SETQ MAXWORD (IPLUS MAXWORD IRMNERD.MAXWORDS)))
                 ((EQ 1 (STRPOS "No more" SELECTION))
                  (RETURN))
                 (T (PROMPTPRINT "
Fetching definition . . . ")
                    (IRMDICT.PRINTENTRY NIL SELECTION)
                    (CLRPROMPT)
                    (RETURN]
          (RETURN T])
)

(RPAQ? IRMDICT NIL)

(RPAQ? IRMNERD.LASTSEARCH NIL)

(RPAQ? IRMNERD.LASTREQUEST NIL)

(RPAQ? IRMNERD.MAXWORDS 50)
(DECLARE%: DOEVAL@COMPILE DONTCOPY


(GLOBALVARS IRMDICT IRMNERD.LASTSEARCH IRMNERD.LASTREQUEST IRMNERD.MAXWORDS)
)
(DEFINEQ

(IRMDICT.PRINTENTRY
  [LAMBDA (DICT LEMMA)                                       (* ; "Edited 25-Jan-88 11:10 by jtm:")

    (LET (FIRSTCHAR SECTION# GRAPH NODE)
         (SETQ FIRSTCHAR (NTHCHAR LEMMA 1))
         [COND
            ((NUMBERP FIRSTCHAR)
             [SETQ SECTION# (SUBSTRING LEMMA 1 (SUB1 (OR (STRPOS " " LEMMA)
                                                         0]
             [COND
                ((EQ (NTHCHARCODE SECTION# -1)
                     (CHARCODE %.))                          (* sometimes there is a trailing 
                                                             period.)
                 (SETQ SECTION# (SUBSTRING SECTION# 1 -2]
             [for I from 1 to (NCHARS SECTION#) do (COND
                                                      ((EQ (NTHCHARCODE SECTION# I)
                                                           (CHARCODE %.))
                                                             (* DINFO uses dashes instead of 
                                                             periods)
                                                       (RPLCHARCODE SECTION# I (CHARCODE -]
             (SETQ SECTION# (MKATOM SECTION#))
             (SETQ GRAPH (GETWINDOWUSERPROP DINFOW 'CURRENT.GRAPH))
             [COND
                ((NULL GRAPH)
                 (DINFO.INIT)
                 (SETQ GRAPH (GETWINDOWUSERPROP DINFOW 'CURRENT.GRAPH]
             (SETQ NODE (FASSOC SECTION# (fetch (DINFOGRAPH NODELST) of GRAPH)))
             (AND NODE (DINFO.UPDATE NODE)))
            (T (IRM.SMART.LOOKUP (SUBSTRING LEMMA (COND
                                                     ((EQ FIRSTCHAR '%()
                                                      2)
                                                     (T 1))
                                        (SUB1 (OR (STRPOS " " LEMMA)
                                                  0]
         T])
)

(LISPNERD.INIT)
(PUTPROPS LISPNERD COPYRIGHT ("Xerox Corporation" 1987 1988))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (2875 8096 (LISPNERD.INIT 2885 . 3532) (IRMNERD.PRINTSEARCH 3534 . 8094)) (8344 10333 (
IRMDICT.PRINTENTRY 8354 . 10331)))))
STOP