Index: ChangeLog
===================================================================
RCS file: /project/slime/cvsroot/slime/ChangeLog,v
retrieving revision 1.426
diff -u -F^( -r1.426 ChangeLog
--- ChangeLog	24 Jun 2004 04:32:17 -0000	1.426
+++ ChangeLog	24 Jun 2004 11:02:48 -0000
@@ -1,3 +1,13 @@
+2004-06-24  Christophe Rhodes  <csr21@cam.ac.uk>
+
+	* slime.el (sldb-format-reference-node): fix for when `what' is a
+	list.
+	(sldb-lookup-reference,sldb-reference-properties): support
+	:ansi-cl :section reference types.
+
+	* hyperspec.el (common-lisp-hyperspec-6.0): generalize to work
+	with section numbers lower than 10.
+
 2004-06-24  Brian Downing  <bdowning@lavos.net>
 
  	* slime.el (slime-repl-send-input): Fixed a subtle difference in
Index: hyperspec.el
===================================================================
RCS file: /project/slime/cvsroot/slime/hyperspec.el,v
retrieving revision 1.2
diff -u -F^( -r1.2 hyperspec.el
--- hyperspec.el	4 Dec 2003 16:42:53 -0000	1.2
+++ hyperspec.el	24 Jun 2004 11:02:48 -0000
@@ -1124,7 +1124,10 @@ (defvar common-lisp-hyperspec-format-cha
 (defun common-lisp-hyperspec-section-6.0 (indices)
   (let ((string (format "%sBody/%s_" 
 			common-lisp-hyperspec-root
-			(pop indices))))
+			(let ((base (pop indices)))
+			  (if (< base 10)
+			      (format "0%s" base)
+			    base)))))
     (concat string 
 	    (mapconcat (lambda (n)
 			 (make-string 1 (+ ?a (- n 1))))
Index: slime.el
===================================================================
RCS file: /project/slime/cvsroot/slime/slime.el,v
retrieving revision 1.335
diff -u -F^( -r1.335 slime.el
--- slime.el	24 Jun 2004 04:32:17 -0000	1.335
+++ slime.el	24 Jun 2004 11:02:48 -0000
@@ -5435,7 +5435,7 @@ (defun sldb-reference-properties (where 
           (and (eq where :ansi-cl)
                (symbolp type)
                (member (slime-cl-symbol-name type)
-                       '("function" "special-operator" "macro"))))
+                       '("function" "special-operator" "macro" "section"))))
       `(sldb-default-action sldb-lookup-reference
                             sldb-reference ,ref
                             face sldb-reference-face
@@ -5450,7 +5450,9 @@ (defun sldb-format-reference-source (whe
 (defun sldb-format-reference-node (what)
   (if (symbolp what)
       (upcase (slime-cl-symbol-name what))
-    what))
+    (if (listp what)
+        (mapconcat (lambda (x) (format "%S" x)) what ".")
+      what)))
 
 (defun sldb-lookup-reference ()
   "Browse the documentation reference at point."
@@ -5458,9 +5460,13 @@ (defun sldb-lookup-reference ()
       (get-text-property (point) 'sldb-reference)
     (case where
       (:ansi-cl
-       (hyperspec-lookup (if (symbolp what)
-                             (slime-cl-symbol-name what)
-                           what)))
+       (case type
+         (:section
+          (browse-url (funcall common-lisp-hyperspec-section-fun what)))
+         (t
+          (hyperspec-lookup (if (symbolp what)
+                                (slime-cl-symbol-name what)
+                              what)))))
       (t
        (let ((url (format "%s%s.html" slime-sbcl-manual-root (downcase what))))
          (browse-url url))))))
