Index: slime/ChangeLog diff -u slime/ChangeLog:1.360 slime/ChangeLog:1.362 --- slime/ChangeLog:1.360 Fri Apr 30 20:10:40 2004 +++ slime/ChangeLog Sat May 1 22:19:44 2004 @@ -1,3 +1,43 @@ +2004-05-02 Luke Gorrie luke@bluetail.com + + * slime.el (slime-goto-source-location): Added support for the + :snippet "hint" in a location specifier. If Lisp sends the + (initial) source text for the definition then Emacs isearches for + it in both directions from the given character position. This + makes M-. robust when the Emacs buffer has been edited. Requires + backends to provide this snippet information. + (slime-goto-location-position): Tightened up the regular + expressions for :function-name style location search. + (slime-cleanup-definition-refs): New function to do a little + post-processing on definition references from Lisp. Mostly this is + a hack: if POSITION is NIL then we fill it in with the function + name, ready for regexp search. I was in a hurry and it was easier + to do here, and it doesn't seem entirely unreasonable. + + * swank-backend.lisp (:location): Added a 'hints' property list + to the location structure. This is for extra information that + compliments the buffer/position. + + * swank-cmucl.lisp (code-location-stream-position): Position the + argument stream at the definition before returning. + (source-location-from-code-location): Include the :snippet hint + for Emacs (see above). The snippet will only be accurate provided + that the source file on disk has not been modified. + (*source-file-cache*) The contents of all source files consulted + for M-. are now cached if they match the version of the running + code. This is so that we can accurately lookup source locations + even when the file is modified, provided we manage to get the + right version (by file timestamp) at least once. + (source-location-from-code-location): If the right source version + is not available on disk or in our cache then let Emacs fall back + on a regular expression search. + +2004-05-01 Helmut Eller e9626484@stud3.tuwien.ac.at + + * swank-lispworks.lisp (find-top-frame): New function used to hide + debugger-internal frames. + (call-with-debugging-environment): Use it. + 2004-05-01 Luke Gorrie luke@bluetail.com
* slime.el (sldb-abort): Print a message if the Emacs RPC
I did a cvs update of SLIME Sun May 2 2004 09:30AM PDT.
A recent change to EDIT DEFINITION has caused a problem when the DEFGENERIC is implicitely defined by the compiler and the object file is in a different directory from the source file.
I narrowed the problem down to the following:
slime-cleanup-definition-refs complains:
cond: destructure-case failed: (:error " File-error in function TRUENAME: The file "/m/opt/IU/FREEDIUS/arch/linux-cmucl-redhat-9/lisp/globj/gl-objects.lisp" does not exist.")
(swank::find-definitions-for-emacs "DRAW-OBJECT-AROUND") returns:
(("(DEFGENERIC DRAW-OBJECT-AROUND)" (:ERROR " File-error in function TRUENAME: The file "/m/opt/IU/FREEDIUS/arch/linux-cmucl-redhat-9/lisp/globj/gl-objects.lisp" does not exist.")) ("(METHOD DRAW-OBJECT-AROUND (CME::3D-COMPOSITE-OBJECT))" (:LOCATION (:FILE "/m/opt/IU/FREEDIUS/lisp/cme-compat/object-classes.lisp") (:POSITION 12074))) ("(METHOD DRAW-OBJECT-AROUND (GL-OBJECT))" (:LOCATION (:FILE "/m/opt/IU/FREEDIUS/lisp/basic-gui/display.lisp") (:POSITION 36246))) ("(METHOD DRAW-OBJECT-AROUND (T))" (:LOCATION (:FILE "/m/opt/IU/FREEDIUS/lisp/basic-gui/display.lisp") (:POSITION 35806))) ("(METHOD DRAW-OBJECT-AROUND :AFTER (GL-OBJECT))" (:LOCATION (:FILE "/m/opt/IU/FREEDIUS/lisp/globj/gl-objects.lisp") (:POSITION 12818))))
With this info, the problem should be easy to fix.
Lynn Quam quam@ai.sri.com writes:
I did a cvs update of SLIME Sun May 2 2004 09:30AM PDT.
A recent change to EDIT DEFINITION has caused a problem when the DEFGENERIC is implicitely defined by the compiler and the object file is in a different directory from the source file.
Thanks for the detailed report. It's fixed now.