Andrew Sackville-West wrote: > On Sun, Feb 01, 2009 at 12:23:14PM +0000, Chris Dennis wrote: >> Chris Dennis wrote: >>> Hello folks >>> >>> My project bring HTML templates to GnuCash reports is making good progress. >>> >>> But I've stumbled on another problem which requires expert knowledge of >>> GnuCash and/org Swig and/or Guile. >>> >>> My evaluated report code can access some Gnucash procedures such as >>> gnc:make-html-text, but others such as gncInvoiceGetBook remain 'unbound'. >> In fact the error message refers to 'gncinvoicegetbook' as being >> unbound, i.e. with the name in lower case. Is that relevant? Guile is >> supposed to be case-sensitive unless you tell it not to be. >> >> I can reproduce the problem with this bit of code: >> >> 8<-------------- >> ;#!/usr/bin/guile >> (define s1 "(abcDEF \"23\")") >> (define (abcDEF x) >> (display (string-append "This is abcDEF called with " x "\n"))) >> (with-input-from-string s1 (lambda () (local-eval (read) >> (the-environment)))) >> (read-enable 'case-insensitive) >> (with-input-from-string s1 (lambda () (local-eval (read) >> (the-environment)))) >> 8<-------------- >> >> After setting read to be case insensitive, local-eval tries to call >> (abcdef) and can't find it. >> >> I can't find anywhere in the GnuCash code that turns on case-insensitivity. >> >> Does anyone have any idea why this would happen? > > not a clue, but have you tried > > (read-disable 'case-insensitive) > > in your code somewhere to confirm that this is the problem? > > A
Thanks for the suggestion. I tried putting (read-disable 'case-insensitive) in all sorts of places in the code and none of them made any difference. Adding (read-options) in various places confirmed that 'case-insensitive had NOT been set. So I tried all sorts of things to reproduce the error, and eventually (with much wailing and gnashing of teeth), realised that the culprit was (use-modules (ice-9 slib)) which I must have copied from another report, and wasn't actually needed anyway. http://www.gnu.org/software/guile/manual/html_node/SLIB.html says "In general (and as might be expected) when SLIB is loaded it's the SLIB specifications that are followed." Which apparently includes case-insensitivity! So let that stand as a lesson to young programmers: Guile is case-sensitive and Scheme isn't. Using slib puts Guile into Scheme-like mode for all future (read)s. And now I can finally make more progress with my wonderful report templating system. Tomorrow. cheers Chris -- Chris Dennis [email protected] Fordingbridge, Hampshire, UK _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
