Hello gnucash team, I think I have worked out a way to trap reports without losing the error information. I will include the whole run-report routine from report.scm because it has had some patches applied and probably probably wouldn't patch well against CVS. Hopefully somebody can incorporate it without too much trouble. Cheers. -- Matt Martin [EMAIL PROTECTED] 600 West Grove Parkway #1042 Tempe, AZ, 85283 (480) 775 2660 ----- Code Below ----------- (define (gnc:run-report report-name) ;; Return a string consisting of the contents of the report. (define (display-report-list-item item port) (cond ((string? item) (display item port)) ((null? item) #t) ((list? item) (map (lambda (item) (display-report-list-item item port)) item)) (else (gnc:warn "gnc:run-report - " item " is the wrong type.")))) (let ((report (hash-ref *gnc:_report-info_* report-name))) (if (not report) #f (let* ((options (gnc:report-options report)) (rendering-thunk (gnc:report-rendering-thunk report)) (lines (catch #t (lambda () (rendering-thunk options)) (lambda (key . args) (let* ((astack (make-stack #t gnc:report-rendering-thunk 4))) (display "Report Error in procedure: ") (apply display-error #f (current-error-port) args ) #f ))) )) (if (not lines) #f (call-with-output-string (lambda (port) (for-each (lambda (item) (display-report-list-item item port)) lines)))))) ))
(define (gnc:run-report report-name) ;; Return a string consisting of the contents of the report. (define (display-report-list-item item port) (cond ((string? item) (display item port)) ((null? item) #t) ((list? item) (map (lambda (item) (display-report-list-item item port)) item)) (else (gnc:warn "gnc:run-report - " item " is the wrong type.")))) (let ((report (hash-ref *gnc:_report-info_* report-name))) (if (not report) #f (let* ((options (gnc:report-options report)) (rendering-thunk (gnc:report-rendering-thunk report)) (lines (catch #t (lambda () (rendering-thunk options)) (lambda (key . args) (let* ((astack (make-stack #t gnc:report-rendering-thunk 4))) (display "Report Error in procedure: ") (apply display-error #f (current-error-port) args ) #f ))) )) (if (not lines) #f (call-with-output-string (lambda (port) (for-each (lambda (item) (display-report-list-item item port)) lines)))))) ))
-- Gnucash Developer's List To unsubscribe send empty email to: [EMAIL PROTECTED]