(FILECREATED " 3-Aug-88 15:38:46" {ERINYES}<LISPUSERS>KOTO>LISPNERD.;1 8148
changes to: (VARS LISPNERDCOMS)
previous date: "18-Nov-87 14:37:21" {QV}<DICT>TOOLS>LISPNERD.;6)
(* Copyright (c) 1987, 1988 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT LISPNERDCOMS)
(RPAQQ LISPNERDCOMS ((COMS * LISPNERDDEPENDENCIES)
(* must come before any FILES)
(FILES ANALYZER DINFO (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 (QUOTE LISPNERD)
(QUOTE DEPENDENCIES)
(for FILE in (FILECOMSLST (QUOTE LISPNERD)
(QUOTE FILES))
collect
(CONS FILE (CAAR (GETPROP FILE (QUOTE FILEDATES]
(PROP DEPENDENCIES LISPNERD)
(P (for FILE FILEDATE in (GETPROP (QUOTE LISPNERD)
(QUOTE DEPENDENCIES))
do
[SETQ FILEDATE (CAAR (GETPROP (CAR FILE)
(QUOTE FILEDATES]
(COND ([AND FILEDATE (CDR FILE)
(ILESSP (IDATE FILEDATE)
(IDATE (CDR FILE]
(* clear FILEDATES to force FILESLOAD to reload the
file.)
(PUTPROP (CAR FILE)
(QUOTE 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 . " 8-Jan-86 21:51:52")
(DICTCLIENT . "15-Dec-87 09:49:00")))
[for FILE FILEDATE in (GETPROP (QUOTE LISPNERD)
(QUOTE DEPENDENCIES))
do
[SETQ FILEDATE (CAAR (GETPROP (CAR FILE)
(QUOTE FILEDATES]
(COND ([AND FILEDATE (CDR FILE)
(ILESSP (IDATE FILEDATE)
(IDATE (CDR FILE]
(* clear FILEDATES to force FILESLOAD to reload the file.)
(PUTPROP (CAR FILE)
(QUOTE FILEDATES)
NIL]
(* must come before any FILES)
(FILESLOAD ANALYZER DINFO (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 ←(QUOTE IRMDict)
printEntryFn ←(FUNCTION IRMDICT.PRINTENTRY]
(PUTASSOC (QUOTE Search% IRM)
(QUOTE ((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 (QUOTE
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 QUOTE)
(CAR SET))
NIL
(CONS (QUOTE 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) (* jtm: " 2-Apr-87 08:12")
(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 (QUOTE CURRENT.GRAPH)))
[COND
((NULL GRAPH)
(DINFO.INIT)
(SETQ GRAPH (GETWINDOWUSERPROP DINFOW (QUOTE CURRENT.GRAPH]
(SETQ NODE (FASSOC SECTION# (fetch (DINFOGRAPH NODELST) of GRAPH)))
(AND NODE (DINFO.UPDATE NODE)))
(T (DINFO.IRM.LOOKUP (SUBSTRING LEMMA (COND
((EQ FIRSTCHAR (QUOTE %())
2)
(T 1))
(SUB1 (OR (STRPOS " " LEMMA)
0]
T])
)
(LISPNERD.INIT)
(PUTPROPS LISPNERD COPYRIGHT ("Xerox Corporation" 1987 1988))
(DECLARE: DONTCOPY
(FILEMAP (NIL (2416 6288 (LISPNERD.INIT 2426 . 2972) (IRMNERD.PRINTSEARCH 2974 . 6286)) (6534 8048 (
IRMDICT.PRINTENTRY 6544 . 8046)))))
STOP