From e80f797a5c8e3b5ea647fb74194fea161df0550b Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 9 Oct 2022 22:06:54 +0100 Subject: autodoc: fix for arity 0 functions --- src/geiser/geiser.ss | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/geiser/geiser.ss b/src/geiser/geiser.ss index dae82c0..04fbca8 100644 --- a/src/geiser/geiser.ss +++ b/src/geiser/geiser.ss @@ -74,6 +74,14 @@ (map write-to-string (environment-symbols (interaction-environment)))))) + (define not-found (gensym)) + + (define (try-eval sym . env) + (call/cc + (lambda (k) + (with-exception-handler (lambda (e) (k not-found)) + (lambda () (if (null? env) (eval sym) (eval sym (car env)))))))) + (define (geiser:eval module form) (call-with-result (lambda () (if module (eval form (environment module)) (eval form))))) @@ -137,14 +145,6 @@ (l (string-length s))) (if (<= l max-len) s (string-append (substring s 0 sub-len) sub-str)))) - (define not-found (gensym)) - - (define (try-eval sym) - (call/cc - (lambda (k) - (with-exception-handler (lambda (e) (k not-found)) - (lambda () (eval sym)))))) - (define (operator-arglist operator) (define (procedure-parameter-list p) (and (procedure? p) @@ -159,9 +159,10 @@ (let ([binding (try-eval operator)]) (if (not (eq? binding not-found)) (let ([arglists (procedure-parameter-list binding)]) - (if arglists - `(,operator ("args" ,@(map autodoc-arglist arglists))) - `(,operator ("value" . ,(value->string binding))))) + (cond ((null? arglists) `(,operator ("args" (("required"))))) + (arglists + `(,operator ("args" ,@(map autodoc-arglist arglists)))) + (else `(,operator ("value" . ,(value->string binding)))))) '()))) (define (geiser:autodoc ids) -- cgit v1.2.3