LMFL#!C(:HOST "SYS" :BACKUP-DATE 2760032505. :SYSTEM-TYPE :LOGICAL :VERSION 3. :TYPE "LISP" :NAME "ZMNEW" :DIRECTORY ("REL3-SOURCE" "ZMACS") :SOURCE-PATTERN "( :DIRECTORY (\"REL3-SOURCE\") :NAME :WILD :TYPE :WILD :VERSION :NEWEST)" :VERSION-LIMIT 0. :CHARACTERS T :NOT-BACKED-UP T :CREATION-DATE 2758739859. :AUTHOR "REL3" :LENGTH-IN-BYTES 17609. :LENGTH-IN-BLOCKS 18. :BYTE-SIZE 8.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ;;; -*- Mode:Common-Lisp; Package:ZWEI; Base:8 -*-;;;                           RESTRICTED RIGHTS LEGEND;;;Use, duplication, or disclosure by the Government is subject to;;;restrictions as set forth in subdivision (b)(3)(ii) of the Rights in;;;Technical Data and Computer Software clause at 52.227-7013.;;;;;;                     TEXAS INSTRUMENTS INCORPORATED.;;;                              P.O. BOX 2909;;;                           AUSTIN, TEXAS 78769;;;                                 MS 2151;;;;;; Copyright (C) 1985, 1987 Texas Instruments Incorporated. All rights reserved.;;; Copyright (C) 1980, Massachusetts Institute of Technology;;; Buffer attribute list commands(DEFCOM COM-SET-PACKAGE "Change the package associated with buffer or file.Specify a new package to be used when interning symbols read from this buffer;for example, evaluating or compiling parts of the buffer.This much does not affect operations on the file itself, only this ZMACS buffer.To specify a package that doesn't already exist, you must exit withControl-Return, or type Return twice.  Then you must confirm with \"Yes\".You will also be asked whether to change the attribute list in the text.If you answer yes, the buffer's first line is modified to say thatit belongs in the new package.  This will affect all operations on thefile, once you save the buffer.Then you will be asked whether to resectionize the buffer.If you say yes, all the functions definitions in the bufferwill be recorded under symbols in the new package." ()  (LET (ALIST)    (DOLIST (PKG (LIST-ALL-PACKAGES))      (PUSH (CONS (PACKAGE-NAME PKG) PKG) ALIST)      (DOLIST (N (PACKAGE-NICKNAMES PKG))(PUSH (CONS N PKG) ALIST)))    (LET ((PKG (COMPLETING-READ-FROM-MINI-BUFFER "Set package:" ALIST 'MAYBE)))      (OR (STRINGP PKG)  (SETQ PKG (CAR PKG)))      (IF (EQUAL PKG "")  (SETQ PKG *DEFAULT-PACKAGE*))      (IF (FIND-PACKAGE PKG)  (PKG-GOTO PKG)  (PROGN    (SETQ PKG (STRING-UPCASE PKG))    (IF (YES-OR-NO-P (FORMAT NIL "Package ~A does not exist.  Create? " PKG))(PKG-GOTO (MAKE-PACKAGE PKG))(BARF))))))  (SETF (BUFFER-PACKAGE *INTERVAL*) *PACKAGE*)  (SEND *INTERVAL* :SET-ATTRIBUTE :PACKAGE (PACKAGE-NAME *PACKAGE*) :QUERY)  ;; Add check so we don't offer to resectionize buffer if no  ;; definition sections are present. Done by rpm on 11-10-86.  (WHEN (AND (> (LENGTH (NODE-INFERIORS *INTERVAL*)) 1)     (NULL (NODE-SPECIAL-TYPE *INTERVAL*))     (FQUERY NIL "Resectionize the buffer? "))    (SEND *INTERVAL* :REMPROP :DONT-SECTIONIZE)    (SECTIONIZE-BUFFER *INTERVAL*))  DIS-NONE) (DEFUN COMPUTE-BUFFER-PACKAGE (BUFFER)  "Set *PACKAGE*, *PRINT-BASE* and *READ-BASE* to the right values for BUFFER."  (SETQ *PRINT-BASE* (SETQ *READ-BASE* (OR (SEND BUFFER :GET-ATTRIBUTE :BASE)   *DEFAULT-BASE*   *PRINT-BASE*   12)))  (SETQ *PACKAGE* (OR (SEND BUFFER :SEND-IF-HANDLES :SAVED-PACKAGE)      (FIND-PACKAGE (OR *DEFAULT-PACKAGE* *PACKAGE*))))  NIL) (DEFUN INITIALIZE-BUFFER-PACKAGE (BUFFER)  "Initialize the BUFFER-PACKAGE of BUFFER from its :PACKAGE attribute."  (OR (BUFFER-PACKAGE BUFFER)      (PKG-BIND (OR *DEFAULT-PACKAGE* *PACKAGE*)(CONDITION-BIND ((SYSTEM:PACKAGE-NOT-FOUND 'INITIALIZE-BUFFER-PACKAGE-HANDLER))  (SETF (BUFFER-PACKAGE BUFFER)(MULTIPLE-VALUE-BIND (VARS VALS)    (SEND BUFFER :ATTRIBUTE-BINDINGS)  (PROGV VARS VALS    *PACKAGE*))))))) (DEFUN INITIALIZE-BUFFER-PACKAGE-HANDLER (CONDITION)  (IF (YES-OR-NO-P "~&Package ~A does not exist.  Create it? " (SEND CONDITION :NAME))      :CREATE-PACKAGE      (VALUES :NEW-NAME (PACKAGE-NAME *PACKAGE*)))) (DEFCOM COM-SET-BASE "Change the input radix associated with this buffer or file.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well.The numeric argument is used as the new value,or else one is read in the minibuffer.  The default is ZWEI:*DEFAULT-BASE*." ()  (SETQ *PRINT-BASE* (IF *NUMERIC-ARG-P* *NUMERIC-ARG* (LET ((*PRINT-BASE* 12)       (*READ-BASE* 12))   (TYPEIN-LINE-READ "Set base:")))*READ-BASE* *PRINT-BASE*)  (SEND *INTERVAL* :SET-ATTRIBUTE :BASE *PRINT-BASE* :QUERY)  DIS-NONE) (DEFUN SET-ATTRIBUTE (KEYWORD NAMESTRING &OPTIONAL DEFAULT)  (LET ((INPUT (STRING-TRIM *BLANKS* (TYPEIN-LINE-READLINE "Set ~A:" NAMESTRING)))(*PACKAGE* PKG-KEYWORD-PACKAGE)(*PRINT-BASE* 12)(*READ-BASE* 12))    (SEND *INTERVAL*  :SET-ATTRIBUTE KEYWORD  (IF (EQUAL INPUT "")      DEFAULT      (LET ((TEM (READ-FROM-STRING INPUT T)))(IF (EQ TEM (QUOTE NIL)) NIL TEM)))  :QUERY))  DIS-NONE) (DEFCOM COM-SET-BACKSPACE "Change the Backspace attribute of this buffer.Anything non-NIL causes backspace characters to actually overprint on display.The new value is read in the minibuffer.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well." ()  (SET-ATTRIBUTE :BACKSPACE "attribute Backspace")  (REDEFINE-WINDOW-OVERPRINTING-FLAG *WINDOW* (SEND *INTERVAL* :GET-ATTRIBUTE :BACKSPACE))  DIS-NONE) (DEFCOM COM-SET-LOWERCASE "Change the Lowercase attribute of this buffer.Anything non-NIL identifies this file as containing lowercase or mixed-case data. So Electric Shift-Lock mode will not be used as a default.The new value is read in the minibuffer.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well." ()  (SET-ATTRIBUTE :LOWERCASE "attribute Lowercase")) (DEFCOM COM-SET-NOFILL "Set the Nofill attribute of this buffer.Anything non-NIL prevents use of Auto Fill mode without an explicit user command.The new value is read in the minibuffer.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well." ()  (SET-ATTRIBUTE :NOFILL "attribute Nofill")) (DEFCOM COM-SET-PATCH-FILE "Set the Patch-File attribute of this buffer.Anything non-NIL identifies this file as a patch file.The new value is read in the minibuffer.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well." ()  (SET-ATTRIBUTE :PATCH-FILE "attribute Patch-File")  DIS-NONE) (DEFCOM COM-SET-TAB-WIDTH "Set the displayed width of Tab characters for this buffer.This is the separation of tab stops, measured in space characters.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well.The numeric argument is used as the new value,or else one is read in the minibuffer.  The default is 8." ()  (IF *NUMERIC-ARG-P*      (SEND *INTERVAL* :SET-ATTRIBUTE :TAB-WIDTH *NUMERIC-ARG* :QUERY)      (SET-ATTRIBUTE :TAB-WIDTH "attribute Tab-Width" 10))  (REDEFINE-WINDOW-TAB-NCHARS *WINDOW* (SEND *INTERVAL* :GET-ATTRIBUTE :TAB-WIDTH))  DIS-NONE) (DEFCOM COM-SET-VSP "Set the vertical interline spacing for this buffer.This is the number of blank rows of pixels between lines of text.Applies only to this buffer, and overrides what the attribute list says.Queries you for whether to change the attribute list in the text as well.The numeric argument is used as the new value,or else one is read in the minibuffer.  The default is 2." ()  (IF *NUMERIC-ARG-P*      (SEND *INTERVAL* :SET-ATTRIBUTE *NUMERIC-ARG* :QUERY)      (SET-ATTRIBUTE :VSP "attribute VSP" 2))  (REDEFINE-FONTS *WINDOW* (WINDOW-FONT-ALIST *WINDOW*)  (SEND *INTERVAL* :GET-ATTRIBUTE :VSP))  DIS-NONE) (DEFCOM COM-REPARSE-ATTRIBUTE-LIST "Look at the -*- line again; obey any changes." ()  (REPARSE-BUFFER-MODE-LINE *INTERVAL*)  DIS-NONE) (DEFINE-COMMAND-SYNONYM COM-REPARSE-MODE-LINE COM-REPARSE-ATTRIBUTE-LIST) ;; Modified to support shortening buffer font-list on 2-4-87 by rpm.(DEFUN REPARSE-BUFFER-MODE-LINE (BUFFER &OPTIONAL (QUERY-AND-MAYBE-RESECTIONIZE T) (CHECK-FONTS T))  "Reparse BUFFER's attribute list line and set the buffer's recorded attributes."  (UNLESS (OR (NODE-SPECIAL-TYPE BUFFER); Don't mess with special buffers.      ;; If fewer fonts appear in the buffer's attribute list now than before,      ;; query the user and confirm before proceeding. rpm 2-5-87      (LET* ((OLD-LENGTH (LENGTH (SEND BUFFER :SAVED-FONT-ALIST)))     (NEW-FONTS (GETF (FS:EXTRACT-ATTRIBUTE-LIST (INTERVAL-STREAM BUFFER)) :FONTS))     (NEW-LENGTH (IF (LISTP NEW-FONTS) (LENGTH NEW-FONTS) 1)))(IF CHECK-FONTS    (AND (< NEW-LENGTH OLD-LENGTH) (NOT (FQUERY `(:SELECT T :BEEP T :TYPE :READLINE :CHOICES ,FORMAT:YES-OR-NO-P-CHOICES)      "Buffer font list has been shortened. Characters in font~:[ ~A~*~;s ~A through ~A~] will change to ~:[font A~;the default font~]. ~%Proceed? "      (> (- OLD-LENGTH NEW-LENGTH) 1)      (INT-CHAR (+ NEW-LENGTH 101))      (INT-CHAR (+ OLD-LENGTH 100))      (ZEROP NEW-LENGTH))) (PROGN (FORMAT *QUERY-IO* "Attribute list NOT reparsed.") T))    ;; Only WRITE-FILE-INTERNAL calls this with CHECK-FONTS set to NIL, only when it has    ;; determined that font list length has changed. Cleanup the fonts here in case we are    ;; inside KILL-OR-SAVE-BUFFERS, where BUFFER may not be *INTERVAL*.    (CLEANUP-FONTED-INTERVAL NEW-LENGTH BUFFER))))    (FS:READ-ATTRIBUTE-LIST BUFFER (INTERVAL-STREAM BUFFER))    ;; Forget (and thereby override) any Set Package previously done.        (SETF (BUFFER-PACKAGE BUFFER) NIL)    (INITIALIZE-BUFFER-PACKAGE BUFFER)    (SEND BUFFER :SET-MAJOR-MODE  (OR (GET-FILE-MAJOR-MODE (OR (SEND BUFFER :GET-ATTRIBUTE :MODE)       *DEFAULT-MAJOR-MODE*))      'FUNDAMENTAL-MODE))    (LET (FONTS (*INTERVAL* BUFFER));Must not be bound around the :SET-MAJOR-MODE!      (SETQ FONTS (SET-BUFFER-FONTS BUFFER))      (DOLIST (W (SEND BUFFER :WINDOWS))(REDEFINE-FONTS W FONTS (SEND BUFFER :GET-ATTRIBUTE :VSP))(REDEFINE-WINDOW-OVERPRINTING-FLAG W (SEND BUFFER :GET-ATTRIBUTE :BACKSPACE))(REDEFINE-WINDOW-TAB-NCHARS W (SEND BUFFER :GET-ATTRIBUTE :TAB-WIDTH)))      (COND ((AND *WINDOW* (EQ BUFFER (WINDOW-INTERVAL *WINDOW*)))     (COMPUTE-BUFFER-PACKAGE BUFFER))))    ;; Add check so we don't offer to resectionize buffer if no    ;; definition sections are present. Done by rpm on 11-10-86.    (WHEN (AND (> (LENGTH (NODE-INFERIORS BUFFER)) 1)       QUERY-AND-MAYBE-RESECTIONIZE       (FQUERY NIL "Resectionize the buffer? "))      (SEND *INTERVAL* :REMPROP :DONT-SECTIONIZE)      (SECTIONIZE-BUFFER *INTERVAL*))))(DEFINE-COMMAND-SYNONYM COM-UPDATE-MODE-LINE COM-UPDATE-ATTRIBUTE-LIST) (DEFCOM COM-UPDATE-ATTRIBUTE-LIST "Update the -*- line from current settings.Update the mode line (attribute list) in the text from the current settings of the buffer." ()  (UNLESS (NODE-SPECIAL-TYPE *INTERVAL*); Don't mess with special buffers.    (LET ((PLIST (COPY-LIST (SEND *INTERVAL* :GET 'FS::LAST-FILE-PLIST))))      ;; PLIST has all attributes that were in the file,      ;; or were set by the user.      ;; Give PLIST the current values of all of those attributes.      (DO ((PS PLIST (CDDR PS)))  ((NULL PS))(SETF (CADR PS) (SEND *INTERVAL* :GET (CAR PS))))      (STORE-ATTRIBUTE-LIST *INTERVAL* PLIST)))  DIS-TEXT) (DEFUN CHECK-PLIST-FOR-IMPORTANT-ATTRIBUTES (PLIST BUFFER)  (MULTIPLE-VALUE-BIND (NIL PARSING-ERROR)      (FS:EXTRACT-ATTRIBUTE-LIST (INTERVAL-STREAM BUFFER))    (IF PARSING-ERROR(PROGN  (FORMAT *QUERY-IO* "~&Invalid syntax in the -*- line of buffer ~A." BUFFER)  NIL)(WHEN (AND PLIST   *UPDATE-PLIST-ON-WRITE-OK*   (SI::LISP-MODE-KEYWORD-P (GETF PLIST :MODE)); Not just :lisp anymore.   (BUFFER-PATHNAME BUFFER)   (NULL (GETF PLIST :BASE))   ;; Don't mess with login-inits, since they may SETQ *PRINT-BASE*.   (LET ((ALPHABETIC-CASE-AFFECTS-STRING-COMPARISON NIL))     (NOT (STRING-EQUAL (SEND (BUFFER-PATHNAME BUFFER) :NAME)(SEND (INIT-FILE-PATHNAME 'LOGIN  (SEND (BUFFER-PATHNAME BUFFER) :HOST)  'T)      :NAME))))   (NOT (SEND BUFFER :GET-ATTRIBUTE :NO-BASE-ATTRIBUTE)))  ;; insert a base attribute.  (FORMAT *QUERY-IO* "~&Updating base attribute of ~A to ~D.~%" BUFFER *PRINT-BASE*)  (STORE-ATTRIBUTE-LIST BUFFER (SETQ PLIST (APPEND `(:BASE ,*PRINT-BASE*) PLIST)))  T)))) (DEFUN STORE-ATTRIBUTE-LIST (BUFFER PLIST)  "Modify the attribute list in BUFFER's text to correspond to PLIST.However, the buffer's current major mode is always recordedrather than anything PLIST says."  (LET ((START-BP (INTERVAL-FIRST-BP BUFFER))OLD-ATTRIBUTESPARSING-ERROROLD-ATTRIBUTE-NAMES(*INTERVAL* BUFFER)LINEALIST)    (DECLARE (SPECIAL OLD-ATTRIBUTE-NAMES))    (SETF (VALUES OLD-ATTRIBUTES PARSING-ERROR)  (FS:EXTRACT-ATTRIBUTE-LIST (INTERVAL-STREAM BUFFER)))    (WHEN PARSING-ERROR      (FERROR NIL "Invalid syntax in the -*- line in buffer ~A." BUFFER))    ;; Turn the plist into an alist with elements (propname-string value-string)    ;; Modified to support property values that are strings (for Distribution Tape software) and    ;;  to really leave old attributes in their original order. By rpm on 1-6-87.      (DO ((PS PLIST (CDDR PS)) (*PRINT-BASE* 12) (*READ-BASE* 12) (*NOPOINT T))((NULL PS))      (LET ((PROP-NAME (SYMBOL-NAME (CAR PS)))    (PROP-VAL (CADR PS)))(PUSH (LIST PROP-NAME    (WITH-OUTPUT-TO-STRING (*STANDARD-OUTPUT*)      (IF (AND (STRINGP PROP-VAL)       (STRING-NOT-EQUAL PROP-NAME "PACKAGE"))  (PRIN1 PROP-VAL)  (PRINC PROP-VAL))))      ALIST)))    (SETQ ALIST (NREVERSE ALIST))    ;; Get a list of names of attributes in order they appear in the -*- line now.    (DO ((PS OLD-ATTRIBUTES (CDDR PS)))((NULL PS))      (PUSH (SYMBOL-NAME (CAR PS))    OLD-ATTRIBUTE-NAMES))    (SETQ OLD-ATTRIBUTE-NAMES (NREVERSE OLD-ATTRIBUTE-NAMES))    ;; Sort the new ones into the same order.    ;; All new ones come after all old; new ones are alphabetized.    (SORT ALIST  #'(LAMBDA (AT1 AT2)      (LET ((TEM1 (MEMBER AT1 OLD-ATTRIBUTE-NAMES :TEST #'EQUALP))    (TEM2 (MEMBER AT2 OLD-ATTRIBUTE-NAMES :TEST #'EQUALP)))(IF (AND TEM1 TEM2)    NIL    (OR TEM1 (AND (NOT TEM2)  (STRING-LESSP AT1 AT2))))))  :KEY #'CAR)    (LET (TEM)      ;; Put the package at the front.      (IF (SETQ TEM (ASSOC "PACKAGE" ALIST :TEST #'EQUALP))  (SETQ ALIST (CONS TEM (DELETE TEM (THE LIST ALIST) :TEST #'EQ))))      ;; Ignore what PLIST says for the :MODE.      (IF (SETQ TEM (ASSOC "MODE" ALIST :TEST #'EQUALP))  (SETQ ALIST (DELETE TEM (THE LIST ALIST) :TEST #'EQ)))      ;; Put the buffer's actual mode on, at the very front.      (PUSH (LIST "MODE"  (SYMBOL-VALUE (SEND BUFFER :MAJOR-MODE)))    ALIST))    (SETQ LINE (BP-LINE START-BP))    (LET (IDX END-BP)      (COND ((SETQ IDX (LISP:SEARCH "-*-"                                    (STRING LINE)                                    :TEST #'CHAR-EQUAL))     ;; Put on a comment starter if there isn't one already.     (WHEN *COMMENT-START*       (LET ((START-START (FIND-COMMENT-START LINE))) (UNLESS (AND START-START (< START-START IDX))   (SETQ IDX (BP-INDEX (INSERT-MOVING (BACKWARD-OVER *BLANKS* (CREATE-BP LINE IDX))      (IF (EQ (GET *MAJOR-MODE* 'EDITING-TYPE) :LISP)  ";;; "  *COMMENT-BEGIN*))))   (WHEN (AND *COMMENT-END* (PLUSP (LENGTH *COMMENT-END*)))     (INSERT (END-OF-LINE LINE) *COMMENT-END*)))))     (SETQ START-BP (CREATE-BP LINE (SETQ IDX (+ IDX 3))))     (SETQ IDX (LISP:SEARCH "-*-"                                    (STRING LINE)                                    :START2 IDX                                    :TEST #'CHAR-EQUAL))     (IF IDX (SETQ END-BP (CREATE-BP LINE IDX)) (PROGN                   ;; Modified to handle adding first attribute when first                    ;; line doesn't contain -*-. Done 9-25-86 by rpm (from gm).   (SETQ END-BP (END-LINE START-BP))    ;START-BP was LINE.   (INSERT END-BP " -*-")))     (DELETE-INTERVAL START-BP END-BP)     (SETQ START-BP (INSERT START-BP " "))     (INSERT START-BP " "))    (T     ;;special kludge for tex, since start of line 1 is sacred.     (COND ((EQ *MAJOR-MODE* 'TEX-MODE)    (SETQ START-BP (INSERT (CREATE-BP LINE (LINE-LENGTH LINE)) "  % ")))   ((EQ (GET *MAJOR-MODE* 'EDITING-TYPE) :LISP)    (SETQ START-BP (INSERT START-BP ";;; ")))   (*COMMENT-START*    (SETQ START-BP (INSERT START-BP *COMMENT-BEGIN*))))     (SETQ START-BP (INSERT START-BP "-*- "))     (SETQ END-BP (INSERT START-BP " -*-"))     (COND ((NOT (MEMBER *COMMENT-END* '(NIL "") :TEST #'EQUAL))    (INSERT-MOVING END-BP #\SPACE)    (INSERT-MOVING END-BP *COMMENT-END*)))     (OR (EQ *MAJOR-MODE* 'TEX-MODE) (INSERT END-BP #\NEWLINE)))))    (DO ((LIST ALIST (CDR LIST)))((NULL LIST) NIL)      (LET ((BP1 (COPY-BP START-BP)))(INSERT-MOVING START-BP (STRING-DOWNCASE (CAAR LIST)))(UPCASE-INTERVAL BP1 (FORWARD-CHAR BP1)))      (INSERT-MOVING START-BP #\:)      (INSERT-MOVING START-BP (CADAR LIST))      (AND (OR (CDR LIST));If more to come or some there already   (INSERT-MOVING START-BP "; "))))) (DEFUN PREVIOUS-BUFFER (&REST NOT-THESE-BUFFERS)  "Return most recently selected buffer except for selected buffer and NOT-THESE-BUFFERS."  (DOLIST (B (HISTORY-CONTENTS (SEND *WINDOW* :BUFFER-HISTORY)))    (AND (NEQ B *INTERVAL*) (NOT (MEMBER B NOT-THESE-BUFFERS :TEST #'EQ)) (RETURN B)))) COND ((AND (EQ (SEND PATHNAME :DIRECTORY) :ROOT)      (EQ (SEND (SEND PATHNAME :HOST) :SYSTEM-TYPE) :LISPM)) (BARF "Top-level directories on Explorers cannot contain files."))((SEND PATHNAME :WILD-P) (OR (SEND PATHNAME :WILDCARD-MAP 'FIND-FILE-1 NIL NIL   (SEND PATHNAME :VERSION) SELECT-P QUIETLY LOAD-P DONT-SECTIONIZE)     (BARF "The type component of a pathname cannot be wildcarded for a new file.")))(T (SETQ BUFFER (OR (FIND-FILE-BUFFER PATHNAME)  (MAKE-INSTANCE 'ZMACS-BUFFER :NAME NIL))) (IF DONT-SECTIONIZE     (SETF (GET BUFFER :DONT-SECTIONIZE) T)     (REMPROP BUFFER :DONT-SECTIONIZE)) (IF (NULL (BUFFER-FILE-ID BUFFER))     (IF LOAD-P (REVERT-BUFFER BUFFER PATHNAME(IF DONT-SECTIONIZE 'NOSECTIONIZE T)(AND SELECT-P *FIND-FILE-EARLY-SELECT*)QUIETLY) (SET-BUF