X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fdocumentation.lisp;h=108946e9df4564acc3646b2262aae2dbb76800f6;hb=c482b4547542853e71a3af2870c87ea366069913;hp=5735e9ec5ae637672b74c42a3d24766d767b4670;hpb=dbc86b4e5da669dc336c1203f48445393f6ac864;p=jscl.git diff --git a/src/documentation.lisp b/src/documentation.lisp index 5735e9e..108946e 100644 --- a/src/documentation.lisp +++ b/src/documentation.lisp @@ -1,12 +1,23 @@ ;;; documentation.lisp --- Accessing DOCUMENTATION +;;; Documentation. +(defun documentation (x type) + "Return the documentation of X. TYPE must be the symbol VARIABLE or FUNCTION." + (ecase type + (function + (let ((func (fdefinition x))) + (oget func "docstring"))) + (variable + (unless (symbolp x) + (error "The type of documentation `~S' is not a symbol." type)) + (oget x "vardoc")))) + + ;;; APROPOS and friends (defun map-apropos-symbols (function string package external-only) (flet ((handle-symbol (symbol) - ;; TODO: it's implementation-dependent, though CHAR-EQUAL seems - ;; more reasonable nevertheless - (when (search string (symbol-name symbol) :test #'char=) + (when (search string (symbol-name symbol) :test #'char-equal) (funcall function symbol)))) (if package (if external-only @@ -33,7 +44,7 @@ (when (fboundp symbol) (format t " (fbound)")) (terpri)) - string package external-only)) + (string string) package external-only)) ;;; DESCRIBE