diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 3f48f61f6..ad4a3e871 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,5 +1,8 @@ 2001-06-08 Michael Livshin + * snarf.h, filter-doc-snarfage.c: more changes to cope with + space-happy C preprocessors. + * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces inside cookies. thanks to Matthias Köppe! diff --git a/libguile/filter-doc-snarfage.c b/libguile/filter-doc-snarfage.c index f1d2fd14e..54ebc3c6e 100644 --- a/libguile/filter-doc-snarfage.c +++ b/libguile/filter-doc-snarfage.c @@ -23,6 +23,7 @@ typedef enum state_t SKIP, SKIP_COOKIE, + MULTILINE_BEGINNING_OF_LINE, MULTILINE, MULTILINE_COOKIE, @@ -68,11 +69,19 @@ process () fputs ("(doc-block (\n", stdout); state = MULTILINE; break; + case ' ': + break; default: die ("bad snarf cookie"); break; } break; + case MULTILINE_BEGINNING_OF_LINE: + if (c != ' ') { + state = MULTILINE; + putc (c, stdout); + } + break; case MULTILINE: if (c == '^') { if (want_cookie) { @@ -92,13 +101,15 @@ process () case '(': state = STRINGS; break; - case ' ': - state = MULTILINE; + case '%': + state = MULTILINE_BEGINNING_OF_LINE; break; case '}': fputs ("))\n", stdout); state = SKIP; break; + case ' ': + break; default: die ("bad snarf cookie in multiline context"); break; diff --git a/libguile/snarf.h b/libguile/snarf.h index 045e63441..04c2a3022 100644 --- a/libguile/snarf.h +++ b/libguile/snarf.h @@ -86,11 +86,11 @@ # define SCM_SNARF_INIT(X) # define SCM_SNARF_DOCS(TYPE, FNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) \ ^^{ \ -^^ fname . FNAME \ -^^ type . TYPE \ -^^ location __FILE__ . __LINE__ \ -^^ arglist . ARGLIST \ -^^ argsig REQ OPT VAR \ +^^%fname . FNAME \ +^^%type . TYPE \ +^^%location __FILE__ . __LINE__ \ +^^%arglist . ARGLIST \ +^^%argsig REQ OPT VAR \ ^^(DOCSTRING) \ ^^} # else