diff options
Diffstat (limited to 'scheme/racket/geiser/autodoc.rkt')
-rw-r--r-- | scheme/racket/geiser/autodoc.rkt | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scheme/racket/geiser/autodoc.rkt b/scheme/racket/geiser/autodoc.rkt index 0bb850d..ac66da9 100644 --- a/scheme/racket/geiser/autodoc.rkt +++ b/scheme/racket/geiser/autodoc.rkt @@ -98,10 +98,10 @@ (`(define-syntax-rule (,name . ,formals) . ,_) (add-signature! name formals store)) (`(define-syntax ,name (syntax-rules ,specials . ,clauses)) - (for-each (lambda (c) (add-signature! name (cdar c) store)) + (for-each (lambda (c) (add-syntax-signature! name (cdar c) store)) (reverse clauses))) (`(define-syntax ,name (lambda ,_ (syntax-case ,_ . ,clauses))) - (for-each (lambda (c) (add-signature! name (cdar c) store)) + (for-each (lambda (c) (add-syntax-signature! name (cdar c) store)) (reverse clauses))) (_ void)))) @@ -112,6 +112,13 @@ (cons (parse-formals formals) (hash-ref store name '()))))) +(define (add-syntax-signature! name formals store) + (when (symbol? name) + (hash-set! store + name + (cons (make-signature formals '() '() #f) + (hash-ref store name '()))))) + (define (parse-formals formals) (let loop ((formals formals) (req '()) (opt '()) (keys '())) (cond ((null? formals) |