From: Christophe R. <cs...@ca...> - 2003-10-09 15:03:43
|
Luke Gorrie <lu...@me...> writes: > Hi guys, > > David Lichteblau <da...@li...> writes: > >> Quoting Daniel Barlow (da...@te...): >> > What are you expecting it to do with a generic function anyway? The >> > defgeneric form? First method? Nth method? >> >> Currently, nothing in particular. What about >> - for a generic function object: locate the defgeneric form >> - for a MOP method object: locate the defmethod in question > >>From the SLIME perspective, we would like a way to enumerate every > method of the generic function. We'll then jump you to the first one > (or to the generic function itself first perhaps), and pop up a little > buffer listing the others -- and let you cycle through with > `C-M-.'. We don't do this for generic functions today, but we do for > xref results and plan to use the same interface for generic functions. Well, this bit sounds easy enough to do with basic MOP functionality; the accessor <mop-package>:GENERIC-FUNCTION-METHODS gets you a list of the methods of a generic function, and <mop-package>:METHOD-SPECIALIZERS the specializers of the particular method. (<mop-package> is SB-MOP for sbcl). Of course, if you plan to support non-MOP implementations, you'll want to encapsulate this in your own interface. > For each method we'll want to be able to get (off hand): > Filename it's defined in. > Character position of the definition in that file. > Argument types for that method, for the summary buffer. This indicates the need for some kind of two-way protocol on the source location information. If you evaluate one form from a file buffer, the lisp implementation needs to be told where the form is from, right? Otherwise it can't possibly guess where it should claim the form is defined. Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |