;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 124.28 ;;; Reason: ;;; The code that was added to (zwei:last-resort-possibility) to deal with ;;; package roots was totally broken.... ;;; Written 6-Jun-88 16:05:56 by wkf (William K. Foster) at site Gigamos Cambridge ;;; while running on Orson Welles from band 2 ;;; with Experimental System 124.21, Experimental Local-File 74.1, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.0, Experimental Tape 23.6, Experimental Lambda-Diag 16.1, microcode 1756, SDU Boot Tape 3.144, SDU ROM 8, Kenvironment Loaded.. ; From modified file DJ: L.ZWEI; POSS.LISP#103 at 6-Jun-88 16:05:57 #10R ZWEI#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI"))) (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; POSS  " (DEFUN LAST-RESORT-POSSIBILITY (BP OBJECT &REST IGNORE &AUX DWIMIFIED-OBJECT) (MOVE-BP BP (BEG-OF-LINE (BP-LINE BP))) (INSERT-POSSIBILITY-BEFORE-AND-GO BP (COND ((AND (SETQ DWIMIFIED-OBJECT (SYS:DWIMIFY-PACKAGE-0 OBJECT 'ZMACS-DEFINEDP)) (NOT (EQUAL OBJECT DWIMIFIED-OBJECT))) `(EDIT-DEFINITION-POSSIBILITY ,DWIMIFIED-OBJECT)) ((AND (FDEFINEDP OBJECT) (LET ((DEF (FDEFINITION OBJECT))) (COND ;;if the objects definition is found in a file that is written in a ;;corresponding package ((and (symbolp object) (get (symbol-package object) :prefix) (not (get object 'zmacs-buffers))) (pkg-goto (symbol-package object)) (resectionize-buffer (find-file (send (cadar (get object :source-file-name)) :new-pathname :type "LISP" :version :Newest))) `(edit-definition-possibility ,object)) ;; If the object's definition is a symbol, offer that symbol's definition. ((AND (SYMBOLP DEF) (FQUERY NIL "The definition of ~S is ~S. Visit ~1@*~S? " OBJECT DEF)) `(EDIT-DEFINITION-POSSIBILITY ,DEF)) ;; If the definition has a different name, offer that name. ((AND (ATOM DEF) (NOT (FUNCTIONP DEF))) (BARF "The definition of is ~S is weird: ~S" OBJECT DEF)) ((AND (NOT (EQUAL (FUNCTION-NAME DEF) OBJECT)) (FQUERY NIL "The definition of ~S has the name ~S. Visit ~1@*~S? " OBJECT (FUNCTION-NAME DEF))) `(EDIT-DEFINITION-POSSIBILITY ,(FUNCTION-NAME DEF))) ;; If object has an expr definition, offer to grind it into a new buffer. ((AND (OR (CONSP DEF) (SI:FUNCTION-SPEC-GET OBJECT ':PREVIOUS-EXPR-DEFINITION)) (FQUERY NIL "Grind the definition of ~S into a new buffer? " OBJECT)) (MAKE-BUFFER-CURRENT (CREATE-ONE-BUFFER-TO-GO (FORMAT NIL "~S" OBJECT))) (RETURN-FROM LAST-RESORT-POSSIBILITY (SI:GRIND-1 OBJECT 90. (INTERVAL-STREAM-INTO-BP (INTERVAL-LAST-BP *INTERVAL*))))) ((AND (TYPEP DEF 'MICROCODE-FUNCTION) (FQUERY NIL "~S is a microcoded function. Search through UCODE? " OBJECT)) `(TAGS-SEARCH-SYSTEM-POSSIBILITY ,(SELECT-PROCESSOR (:CADR 'UCODE) (:LAMBDA 'LAMBDA-UCODE) (:EXPLORER 'LAMBDA-UCODE)) ,(FORMAT NIL "(misc-inst-entry ~A)" OBJECT))) (T NIL))))) (T (OR *MINI-BUFFER-COMMAND* (SETQ *MINI-BUFFER-COMMAND* `((COM-EDIT-DEFINITION NIL 1) ,(FORMAT NIL "~S" OBJECT)))) (LET ((FILE (READ-DEFAULTED-PATHNAME (FORMAT NIL "Read ~S from what file:" (STRING-FROM-SPEC OBJECT)) (PATHNAME-DEFAULTS)))) ;; Now that we know the filename, insert a fetch-source-file possibility ;; for it BEFORE the last-resort-possibility, and then do it. ;; So the last-resort-possibility remains the last thing. `(FETCH-SOURCE-FILE-POSSIBILITY ,OBJECT ,FILE)))))) ))