From a53c95126d7ead4202ae97de953327ad10e2f1ae Mon Sep 17 00:00:00 2001 From: Daniel Hartwig Date: Thu, 18 Jul 2013 17:44:01 +0800 Subject: [PATCH] with- helpers return values from their body * figl/gl.scm (with-gl-push-matrix, with-gl-push-attrib): Return the value(s) of the last expression in BODY. --- figl/gl.scm | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/figl/gl.scm b/figl/gl.scm index 148ba90..a579fd6 100644 --- a/figl/gl.scm +++ b/figl/gl.scm @@ -273,10 +273,13 @@ (define-syntax with-gl-push-matrix (syntax-rules () ((_ body ...) - (begin - (%glPushMatrix) - body ... - (%glPopMatrix))))) + (call-with-values + (lambda () + (%glPushmatrix) + body ...) + (lambda vals + (%glPopMatrix) + (apply values vals)))))) (export-syntax with-gl-push-matrix) @@ -380,10 +383,12 @@ ;; emacs: (put 'with-gl-push-attrib 'scheme-indent-function 1) (define-syntax-rule (with-gl-push-attrib bits body ...) - (begin - (%glPushAttrib bits) - body - ... - (%glPopAttrib))) + (call-with-values + (lambda () + (%glPushAttrib bits) + body ...) + (lambda vals + (%glPopAttrib) + (apply values vals)))) (export with-gl-push-attrib) -- 2.20.1