Attach please find a patch that allows SLIME HEAD to work with ABCL.
This patch
o does not attempt to automatically compile the files in the SLIME
'contrib' directory, as ABCL never returns when asked to compile
'contrib/swank-arglists.lisp'
o allows the use of slime-compile-and-load-file (C-c C-k) by patching
the definition of COMPILER-CONDITION with explicit NILs, and does a load
time creation of a COMPILER-CONDITION to get the MOP discriminating
functions initialized correctly
Both these patches should really be addressed within the ABCL itself,
but I haven't had the time to figure out these problems to the depth
needed for understanding how to fix them. Patching SLIME to get around
these problems at the present moment would at least stop people from
complaining "SLIME is broken for ABCL", but I leave that decision up to
the ruling SLIME-heads. . .
--
Mark.Evenson@gmx.at
"[T]his is not a disentanglement from, but a progressive knotting into."
Index: swank-abcl.lisp
===================================================================
RCS file: /project/slime/cvsroot/slime/swank-abcl.lisp,v
retrieving revision 1.42
diff -u -r1.42 swank-abcl.lisp
--- swank-abcl.lisp 23 Aug 2007 19:03:37 -0000 1.42
+++ swank-abcl.lisp 3 Sep 2007 09:11:52 -0000
@@ -532,6 +532,7 @@
(defimplementation quit-lisp ()
(ext:exit))
-
-
-
+(let ((c (make-condition 'compiler-condition))
+ (slots `(severity message short-message references location)))
+ (dolist (slot slots)
+ (funcall slot c)))
Index: swank-backend.lisp
===================================================================
RCS file: /project/slime/cvsroot/slime/swank-backend.lisp,v
retrieving revision 1.122
diff -u -r1.122 swank-backend.lisp
--- swank-backend.lisp 23 Aug 2007 19:32:56 -0000 1.122
+++ swank-backend.lisp 3 Sep 2007 09:11:52 -0000
@@ -390,14 +390,17 @@
;; The original condition thrown by the compiler if appropriate.
;; May be NIL if a compiler does not report using conditions.
:type (or null condition)
+ :initform nil
:initarg :original-condition
:accessor original-condition)
(severity :type severity
:initarg :severity
+ :initform nil
:accessor severity)
(message :initarg :message
+ :initform nil
:accessor message)
(short-message :initarg :short-message
@@ -409,6 +412,7 @@
:accessor references)
(location :initarg :location
+ :initform nil
:accessor location)))
(definterface find-external-format (coding-system)
Index: swank-loader.lisp
===================================================================
RCS file: /project/slime/cvsroot/slime/swank-loader.lisp,v
retrieving revision 1.70
diff -u -r1.70 swank-loader.lisp
--- swank-loader.lisp 31 Aug 2007 11:48:23 -0000 1.70
+++ swank-loader.lisp 3 Sep 2007 09:11:52 -0000
@@ -218,8 +218,10 @@
(append-dir fasl-directory "contrib")))
(compile-files-if-needed-serially (swank-source-files source-directory)
fasl-directory t)
+ ;; ABCL chokes on compiling 'contrib/swank-arglists.lisp'
+ #-:abcl
(compile-files-if-needed-serially (contrib-source-files source-directory)
- contrib-fasl-directory nil)
+ contrib-fasl-directory nil)
(set (read-from-string "swank::*swank-wire-protocol-version*")
(slime-version-string))
(funcall (intern (string :warn-unimplemented-interfaces) :swank-backend))