A (very) few words about PCL-ENV. If you require more information, consult the source code. While it is not particularly well documented, it is the final arbiter of truth regarding its own functionality. The file PCL-ENV.LISP defines some low-level facilities to integrate PCL into the XeroxLisp environment. The first order of business is teaching the FileManager (nee FilePackage) about CLOS defineing forms. This in turn brings us to the issue of names. o Names and the FileManager For the FileManager to keep track of defining forms, it needs to know how to extract a (unique) name and FileManager type from the form. PCL-ENV includes FileManager support for the definers DEFCLASS, DEFGENERIC, and DEFMETHOD. DEFCLASS The name of a DEFCLASS form is the name of the class defined by the form. The FileManager type is PCL::CLASSES. There is a FileManager "undefiner" provided for DEFCLASS. DEFGENERIC The name of a DEFGENERIC form is the name of the generic-function defined by the form. The FileManager type is PCL::GENERIC-FUNCTIONS. DEFMETHOD The name of a DEFMETHOD form is a list of the form ( {}* ({*})). The FileManager type is PCL::METHODS. There is a FileManager "undefiner" provided for DEFMETHOD. However, note that if a generic-function was created as a side-effect of the DEFMETHOD, the undefiner will leave the generic-function defined (albet with no methods). When editing, it would be onerous to require the programmer to type in the full name of a method. PCL-ENV arranges it so that (ED ) will ask the programmer which method on that generic-function should be edited. (If there is only one method, it is assumed that that is the method to be edited.) As of the Victoria-Day release, EQL specialized methods are handled correctly. o Inspecting CLOS objects (and metaobjects) PCL-ENV defines a protocol that is used to inspect objects, and arranges that the standard INSPECT function uses this protocol. Programmers can use this protocol by defining additional methods on the following generic-functions. INSPECT-SLOT-NAMES object Returns a list of "slots" to include in the inspector. The default method returns a list of all slots on the object. INSPECT-SLOT-VALUE object slot-name Returns the value to associated with the slot-name in the inspector. Slot-name is one of the items returned by INSPECT-SLOT-NAMES. The default method returns (SLOT-VALUE object slot-name). INSPECT-SETF-SLOT-VALUE object slot-name new-value Sets the value associated with the slot-name in the inspector. Slot-name is one of the items returned by INSPECT-SLOT-NAMES. The default method executes (SETF (SLOT-VALUE object slot-name) new-value). INSPECT-TITLE object inspect-window Returns the title to use in the inspect-window when inspecting object. The default returns the string "Inspecting the class " when the object is a class, or "Inspecting a " otherwise. o Debugging and the Stack Debugging in PCL is complicated by generic-functions and methods appear on the stack not as single objects, but as collections of functions that the programmer did not directly call. PCL-ENV redefines a number of internal debugger functions to simplify the presentation of the stack, and allow the programmer to access to the original defining forms from the stack. These changes only affect the "short" display backtrace (brought up by BT in a break window); the full backtrace (brought up by BT!) is unaffected. o Misc Prettyprinting The support for standard Prettyprinting is pretty minimal. Only DEFMETHOD, DEFCLASS, WITH-ACCESSORS, and WITH-SLOTS are supported, and they aren't really done right. Thanks to Harley Davis, PCL-ENV defines SEdit pretty-print specs for the forms DEFCLASS, DEFMETHOD, DEFGENERIC, GENERIC-FLET, GENERIC-LABELS, CALL-NEXT-METHOD, SYMBOL-MACROLET, WITH-ACCESSORS, WITH-SLOTS, and MAKE-INSTANCE. ?= The function SMARTARGLIST is changed to return appropriate values for the arglists of generic-functions. The macros DEFCLASS and DEFMETHOD have "pretty" arglists defined. PrettyFileIndex Again thanks to Harley Davis, PCL-ENV teaches PRETTY-FILE-INDEX about classes, methods, and accessors. The variables PCL::*PFI-INDEX-ACCESSORS* and PCL::*PFI-METHOD-INDEX* may be changed by the user to tailor the computation of the file index. Note that the file PRETTY-FILE-INDEX must be loaded before PCL-ENV for this to take effect. --- smL 25-May-89