[slime-cvs] CVS slime

CVS User mevenson mevenson at common-lisp.net
Sat Sep 12 08:47:31 UTC 2009


Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv22300

Modified Files:
	ChangeLog swank-abcl.lisp 
Log Message:
Provided by Alan Ruttenberg.
 
  	* swank-abcl.lisp (source-location): Make edit definition work.
 
 	* swank-abcl.lisp (arglist): Now works with generic functions.


--- /project/slime/cvsroot/slime/ChangeLog	2009/09/08 05:59:20	1.1851
+++ /project/slime/cvsroot/slime/ChangeLog	2009/09/12 08:47:30	1.1852
@@ -1,3 +1,12 @@
+2009-09-12  Mark Evenson  <evenson at panix.com>
+
+	Provided by Alan Ruttenberg.
+
+	* swank-abcl.lisp (source-location): Make edit definition work.
+
+	* swank-abcl.lisp (arglist): Now works with generic functions.
+
+
 2009-09-08  Helmut Eller  <heller at common-lisp.net>
 
 	* swank-loader.lisp (lisp-version-string): Include "-ics" for
--- /project/slime/cvsroot/slime/swank-abcl.lisp	2009/08/19 14:58:02	1.68
+++ /project/slime/cvsroot/slime/swank-abcl.lisp	2009/09/12 08:47:30	1.69
@@ -213,7 +213,12 @@
 
 (defimplementation arglist (fun)
   (cond ((symbolp fun)
-         (multiple-value-bind (arglist present) (sys::arglist fun)
+         (multiple-value-bind (arglist present) 
+             (or (sys::arglist fun)
+                 (and (fboundp fun)
+                      (typep (symbol-function fun) 'standard-generic-function)
+                      (let ((it (mop::generic-function-lambda-list (symbol-function fun))))
+                        (values it it))))
            (if present arglist :not-available)))
         (t :not-available)))
 
@@ -430,12 +435,14 @@
 
 (defun source-location (symbol)
   (when (pathnamep (ext:source-pathname symbol))
-    `(((,symbol)
-       (:location 
-        (:file ,(namestring (ext:source-pathname symbol)))
-        (:position ,(or (ext:source-file-position symbol) 1))
-        (:align t))))))
-
+    (let ((pos (ext:source-file-position symbol)))
+      `(((,symbol)
+         (:location
+           (:file ,(namestring (ext:source-pathname symbol)))
+           ,(if (and pos (plusp pos))
+                (list :position pos t)
+                (list :function-name (string symbol)))
+           (:align t)))))))
 
 (defimplementation find-definitions (symbol)
   (source-location symbol))





More information about the slime-cvs mailing list