Update of /project/cldoc/cvsroot/cldoc/src In directory common-lisp.net:/tmp/cvs-serv18061
Modified Files: cludg.lisp Log Message: Fix string documentation finding. Declaration forms can appear before the doc string in many lambda type. This case was not handled at all. The defstef-short-descriptor was not defining its lambda list. Date: Sun Nov 20 23:33:25 2005 Author: ihatchondo
Index: cldoc/src/cludg.lisp diff -u cldoc/src/cludg.lisp:1.1.1.1 cldoc/src/cludg.lisp:1.2 --- cldoc/src/cludg.lisp:1.1.1.1 Fri Nov 18 15:52:18 2005 +++ cldoc/src/cludg.lisp Sun Nov 20 23:33:24 2005 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: CLUDG; -*- -;;; $Id: cludg.lisp,v 1.1.1.1 2005/11/18 14:52:18 ihatchondo Exp $ +;;; $Id: cludg.lisp,v 1.2 2005/11/20 22:33:24 ihatchondo Exp $ ;;; --------------------------------------------------------------------------- ;;; Title: Common Lisp Universal Documentation Generator ;;; Created: 2005 10 23 12:30 @@ -100,9 +100,12 @@
(defun extract-doc (forms) "Returns the first string found in the given list of forms. - NIL is returned if no string is found." - (loop for sub-form in forms until (stringp sub-form) - finally (return (and (stringp sub-form) sub-form)))) + NIL is returned if no string is found before the first non + declare form." + (flet ((declare-p (form) (eq (car form) 'DECLARE))) + (loop for sub-form in forms + until (or (stringp sub-form) (not (declare-p sub-form))) + finally (return (and (stringp sub-form) sub-form)))))
(defun grok-new-lines (string) "Returns a list of the string lines contained in the given string." @@ -368,7 +371,8 @@ (:documentation "This descriptor is made for: defsetf."))
(defclass defsetf-short-descriptor (defsetf-descriptor) - ((update-fn :initarg :update-fn :initform nil :reader update-fn)) + ((update-fn :initarg :update-fn :initform nil :reader update-fn) + (lambda-list :initform nil)) (:documentation "This descriptor handles the short form of defsetf: (defsetf foo update-fn docstring)"))
@@ -518,7 +522,7 @@ :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (third form) - :doc (when (stringp (fourth form)) (fourth form)))) + :doc (extract-doc (cdddr form))))
(define-descriptor-handler DEFMACRO (form) "macro" @@ -526,7 +530,7 @@ :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (third form) - :doc (when (stringp (fourth form)) (fourth form)))) + :doc (extract-doc (cdddr form))))
(define-descriptor-handler DEFSETF (form) "setf mapping" @@ -540,7 +544,7 @@ :name (format nil "(setf ~s)" (second form)) :extra-args (third form) :lambda-list (fourth form) - :doc (let ((d (fifth form))) (and (stringp d) d))) + :doc (extract-doc (cddddr form))) (make-instance 'defsetf-short-descriptor :type (format nil "~s" (first form)) :name (format nil "(setf ~s)" (second form)) @@ -809,7 +813,7 @@ :name (format nil "~s" (second form)) :qualifiers qualifiers :lambda-list lambda-list - :doc (extract-doc (cddr form))))) + :doc (extract-doc (if qualifiers (cddddr form) (cdddr form))))))
(define-descriptor-handler DEFGENERIC (form) "generic function"