summaryrefslogtreecommitdiffstats
path: root/schmooz.scm
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:06:40 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:06:40 -0800
commita69c9fb665459e2bfdbda1bf80741a0af31a7faf (patch)
treef0bc974f8805049e6b9a4e6864886298fbaa05a4 /schmooz.scm
parent4684239efa63dc1b2c1cbe37ef7d3062029f5532 (diff)
downloadslib-a69c9fb665459e2bfdbda1bf80741a0af31a7faf.tar.gz
slib-a69c9fb665459e2bfdbda1bf80741a0af31a7faf.zip
New upstream version 3b5upstream/3b5upstream
Diffstat (limited to 'schmooz.scm')
-rwxr-xr-x[-rw-r--r--]schmooz.scm22
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)))