Subject: bug#64754: ‘generate-documentation’ shows evaluated default values

From: Ludovic Courtès <[email-masked]>
Date: Thu, 20 Jul 2023 12:58:12 +0200

The ‘generate-documentation’ procedure of (gnu services configuration)
shows evaluated default values, as in this example:

--8<---------------cut here---------------start------------->8---
scheme@(gnu services admin)> (define serialize-string identity)
scheme@(gnu services admin)> (define-configuration foo
			       (f (string (version)) "The version string."))
scheme@(gnu services admin)> (foo)
$44 = #<<foo> f: "3.0.99-git" %location: #f>
scheme@(gnu services admin)> (display (generate-documentation `((foo ,foo-fields)) 'foo))

@c %start of fragment

@deftp {Data Type} foo
Available @code{foo} fields are:

@table @asis
@item @code{f} (default: @code{"3.0.99-git"}) (type: string)
The version string.

@end table

@end deftp

@c %end of fragment
--8<---------------cut here---------------end--------------->8---

Notice that the ‘version’ call is expanded.

This is problematic because sometimes we explicitly want to have default
values like ‘%default-xyz’ or ‘(expt 2 10)’, and this is what we want
to appear in the manual, not their evaluation result.

Ludo’.