Subject: Re: bug#60582: [PATCH] Properly format list of packages & sync lightdm documentation.

From: Bruno Victal <[email-masked]>
Date: Fri, 13 Jan 2023 20:34:15 +0000

On 2023-01-13 20:29, Maxim Cournoyer wrote:
> Hi,
> 
> Bruno Victal <[email-masked]> writes:
> 
>> * gnu/services/configuration.scm
>> (generate-documentation): Format a list of packages by their names.
>> ---
>>  gnu/services/configuration.scm | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
>> index 6b0291dc00..16e2380709 100644
>> --- a/gnu/services/configuration.scm
>> +++ b/gnu/services/configuration.scm
>> @@ -370,6 +370,9 @@ (define (show-default val)
>>                       (cond
>>                        ((package? val)
>>                         (symbol->string (package->symbol val)))
>> +                      ((and ((list-of package?) val) (not (null? val)))
>> +                       (format #f "(~{~a~^ ~})"
>> +                        (map package->symbol val)))
> 
> The 'and' and (not (null? val)) don't seem to be necessary as in the
> empty list of packages, it'd produce the same as the else clause below:
> 
> --8<---------------cut here---------------start------------->8---
> scheme@(gnu services configuration)> (format #f "(~{~a~^ ~})" '())
> $1 = "()"
> scheme@(gnu services configuration)> (str '())
> $2 = "()"
> --8<---------------cut here---------------end--------------->8---
> 
>>                        (else (str val))))
>>  
>>                     `(entry (% (heading
> 

It is necessary for non file-like fields whose default value is '().
Otherwise configuration->documentation will show blank spaces when it should show an empty list.

Cheers,
Bruno