diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:06:40 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:06:40 -0800 |
commit | a69c9fb665459e2bfdbda1bf80741a0af31a7faf (patch) | |
tree | f0bc974f8805049e6b9a4e6864886298fbaa05a4 /schmooz.scm | |
parent | 4684239efa63dc1b2c1cbe37ef7d3062029f5532 (diff) | |
download | slib-a69c9fb665459e2bfdbda1bf80741a0af31a7faf.tar.gz slib-a69c9fb665459e2bfdbda1bf80741a0af31a7faf.zip |
New upstream version 3b5upstream/3b5upstream
Diffstat (limited to 'schmooz.scm')
-rwxr-xr-x[-rw-r--r--] | schmooz.scm | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/schmooz.scm b/schmooz.scm index 39785f3..55103b9 100644..100755 --- a/schmooz.scm +++ b/schmooz.scm @@ -306,22 +306,32 @@ #\!)) '("deffn {Procedure}" "deffnx {Procedure}" "deffn") '("defun" "defunx" "defun")))))) + (define in-body? #f) (out-header args (car ops)) (let loop ((xdefs xdefs)) (cond ((pair? xdefs) (out-header (car xdefs) (cadr ops)) (loop (cdr xdefs))))) (for-each (lambda (subl) + ;;(print 'in-body? in-body? 'subl subl) (out 0 (car subl)) (for-each (lambda (l) (case (car l) ((@dfn) (out-cindex (cadr l))) ((@args) - (out-header - (cons (car args) (cdr l)) - (cadr ops))))) - (cdr subl))) + (cond + (in-body? + (out 0 "@end " (caddr ops)) + (set! in-body? #f) + (out-header (cons (car args) (cdr l)) + (car ops))) + (else + (out-header (cons (car args) (cdr l)) + (cadr ops))))))) + (cdr subl)) + (if (not (equal? "" (car subl))) + (set! in-body? #t))) (map (lambda (bl) (substitute-macs bl mac-list)) body)) @@ -344,9 +354,7 @@ (else (report "bad macro" l)))) (cdr subl))) - (map (lambda (bl) - (substitute-macs bl mac-list)) - body)) + (map (lambda (bl) (substitute-macs bl mac-list)) body)) (out 0 "@end defvar") (out 0))) |