If the first symbol of a list is a keyword symbol, Swine will signal
an error when it tries to look up its arglist. The attached patch
fixes this issue.
Index: swine-cmds.lisp
===================================================================
RCS file: /project/clim-desktop/cvsroot/clim-desktop/swine-cmds.lisp,v
retrieving revision 1.3
diff -u -r1.3 swine-cmds.lisp
--- swine-cmds.lisp 22 Feb 2006 10:47:29 -0000 1.3
+++ swine-cmds.lisp 14 Mar 2006 10:26:19 -0000
@@ -177,8 +177,17 @@
(when name
(with-slots (package) (syntax (buffer (current-window)))
(let ((function-symbol (let* ((pos2 (position #\: name :from-end t))
- (pos1 (if (and pos2 (char= (elt name (1- pos2)) #\:)) (1- pos2) pos2) ))
- (handler-case (if pos2 (find-symbol (subseq name (1+ pos2)) (subseq name 0 pos1))
+ (pos1 (if (and pos2
+ ;; If the first
+ ;; element of
+ ;; the list is
+ ;; a keyword
+ ;; symbol, pos2
+ ;; might be 0.
+ (plusp pos2)
+ (char= (elt name (1- pos2)) #\:))
+ (1- pos2) pos2)))
+ (handler-case (if pos1 (find-symbol (subseq name (1+ pos2)) (subseq name 0 pos1))
(find-symbol name (or package *package*)))
(package-error (e)
;; The specified symbol is in
--
\ Troels "Athas" Henriksen
/\ - Insert witty signature