Nikodemus Siivola tsiivola@cc.hut.fi writes:
On Wed, 14 Jul 2004, Peter Seibel wrote:
Hmmm. I don't think I explicitly deleted any packages but I may have reevaluated various DEFPACKAGE forms. Mightn't that sometimes cause an implicit DELETE-PACKAGE? Or something that would confuse SLIME in the
It _would_ be legal, since the consequences are undefined if a defpackage form that is at variance with the current state of the package is evaluated... but that sounds like a fairly inhospitable way to go about things, so I'd be a tad surprised if some implementation does that.
I think it's just Slime getting out of synch when eg. package nicknames change, as it seems to be holding on to the package name, not the object (which would preserve identity across renames):
CL-USER> (defpackage :temporary (:use :cl) (:nicknames :tmp)) #<PACKAGE "TEMPORARY"> CL-USER> (in-package :tmp) #<PACKAGE "TEMPORARY"> TMP> (rename-package :temporary :temporary) ; remove nickname #<PACKAGE "TEMPORARY"> TMP> (find-package :tmp) ; really gone NIL TMP> *package* ; so where are we really.... #<PACKAGE "COMMON-LISP-USER"> TMP> (in-package :cl-user) #<PACKAGE "COMMON-LISP-USER"> TMP>
Okay, now I'm afraid I dorked something up with my change the other day to abbreviate the package name in the prompt. Namely I'm afraid that somewhere SLIME is using the abbreviated name, which is not necessarily a real package nickname, as the name of the package. Can someone explain the basic theory of how SLIME thinks about packages?
-Peter