summaryrefslogtreecommitdiff
path: root/geiser/introspection.scm
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-14 14:07:08 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-14 14:07:08 +0100
commit8cd52599b79c2715f520f18a47b5198945e44187 (patch)
tree991f0a28d61960221dfffd1bbe69b29e99b11982 /geiser/introspection.scm
parentaf1c5a38ba4b352837bcba85142332ec3e46f99a (diff)
downloadgeiser-guile-8cd52599b79c2715f520f18a47b5198945e44187.tar.gz
geiser-guile-8cd52599b79c2715f520f18a47b5198945e44187.tar.bz2
Small autodoc fixes.
Diffstat (limited to 'geiser/introspection.scm')
-rw-r--r--geiser/introspection.scm16
1 files changed, 9 insertions, 7 deletions
diff --git a/geiser/introspection.scm b/geiser/introspection.scm
index a158d66..cd48740 100644
--- a/geiser/introspection.scm
+++ b/geiser/introspection.scm
@@ -25,19 +25,19 @@
;;; Code:
(define-module (geiser introspection)
- #:export (arguments completions symbol-location)
+ #:export (arguments completions symbol-location docstring)
#:use-module (system vm program)
#:use-module (ice-9 session)
#:use-module (srfi srfi-1))
(define (arguments sym . syms)
(let loop ((sym sym) (syms syms))
- (cond ((obj-args (resolve-symbol sym)) => (lambda (args) (cons sym args)))
+ (cond ((obj-args (symbol->obj sym)) => (lambda (args) (cons sym args)))
((null? syms) #f)
(else (loop (car syms) (cdr syms))))))
-(define (resolve-symbol sym)
- (module-ref (current-module) sym))
+(define (symbol->obj sym)
+ (and (symbol? sym) (module-ref (current-module) sym)))
(define (obj-args obj)
(cond ((not obj) #f)
@@ -80,9 +80,11 @@
(define (procedure-args-from-source name src)
(let ((formals (cadr src)))
(cond ((list? formals) (format-args formals #f (symbol-module name)))
- ((pair? formals) (format-args (car formals)
- (cdr formals)
- (symbol-module name)))
+ ((pair? formals) (let ((req (car formals))
+ (opt (cdr formals)))
+ (format-args (if (list? req) req (list req))
+ opt
+ (symbol-module name))))
(else #f))))
(define (macro-args macro)