Re: slime

Gary Byers <[email protected]> Sat, 13 Aug 2005 14:53:45 -0600 (MDT)
Newsgroups gmane.lisp.openmcl.bugs
Message-ID <[email protected]>

On Sat, 13 Aug 2005, bryan o'connor wrote:

> one more thing that we should ensure works properly with
> 0.14.4 is slime.
>
> the only breakage that i've noticed is slime-edit-definition
> (M-.) with methods.
>
> adding some missing types (funcallable-standard-class) to the
> etypecase in swank::specializer-name will fix it for some
> methods.  others, like documentation, still don't work.
>
> i'm not sure if this is strictly a slime problem with 0.14.4
> or something with 0.14.4 itself.
>
>    ...bryan
>

When I first started SLIME (updated from CVS a few minutes ago)
and did M-. on DOCUMENTATION, I got an error in CCL::EDIT-DEFINITION-P;
an assignement to a variable named SPECIALIZERS was assuming that
it could call CLASS-NAME on any method specializer that isn't a list.
(In the pre-most-of-MOP days, EQL specializers were just 2-element
lists.)

That couldn't have ever worked, could it ? (post most-of-MOP)

When I changed that code (in the MAPCAR) to do:

  (if (typep s 'class)
    (class-name s)
    s)

and did M-. again, I got a buffer full of things like:

   (METHOD (SETF DOCUMENTATION) (T STRUCTURE-CLASS (EQL T)))

and

   (METHOD DOCUMENTATION (STRUCTURE-CLASS (EQL T)))

When I clicked on one of them, XEmacs opened a buffer on the right
file (I think that all DOCUMENTATION/(SETF DOCUMENTATION) methods
are in "ccl:lib;misc.lisp") but failed to find the method.  (The lisp
only keeps track of the file that a definition came from and some
indication as to what type of definition it was; for methods, that
indication is the method itself.  Past that point, the editor's
pretty much on its own.)

I suppose that the searching issue might be Emacs-/XEmacs-related.

I think that (if SLIME doesn't care about supporting very old versions
of OpenMCL) SWANK::SPECIALIZER-NAME could just be:

(etypecase spec
    (class (class-name spec))
    (swank-mop:eql-specializer `(eql ,(swank-mop:eql-specializer-object spec))))

e.g, that we don't need to enumerate all of the subclasses of CLASS.

I just tried running under Fink's version of Emacs with the fix to
CCL::EDIT-DEFINITION-P; it (mis-)behaved about the same way that XEmacs
did.

Do you get different behavior ?

Alanr may read this list, and may know what's up on the SLIME side.