Subject: [bug#52974] [PATCH 0/5] Formatting package definitions with 'guix style'

From: Ludovic Courtès <[email-masked]>
Date: Mon, 3 Jan 2022 11:53:35 +0100

Hello Guix!

This patch set extends ‘guix style’ so that it can format
package definitions following our conventions.  It adds a
new ‘-S’ option to ‘guix style’, which allows you to select
a “styling rule”.

To obtain the same behavior as before, you now need to run
‘guix style -S inputs’ (this is an incompatibility); ‘guix
style’ alone is equivalent to ‘guix style -S format’, which
formats the given package definition(s).

The code of the pretty printer is not pretty, but it does a
rather good job, notably because it recognizes our special
forms and rules, unlike ‘pretty-print’.  I’m sure we could
spend months tweaking it, but I think it’s reached the point
where we can recommend it.

This nicely replaces ‘etc/indent-code.el’ and will hopefully
make the lives of contributors easier.

Thoughts?

Eventually we should change importers to use this instead of
(ice-9 pretty-print).  I also envision a rule to rewrite Rust
packages to look like regular packages, as discussed earlier
with Efraim, which will benefit from this work.

Ludo’.

Ludovic Courtès (5):
  style: Improve pretty printer and add tests.
  style: Allow special forms to be scoped.
  style: Add support for "newline forms".
  style: Add '--styling' option.
  style: '-S format' canonicalizes comments.

 doc/contributing.texi  |  18 +-
 doc/guix.texi          |  60 +++++-
 etc/indent-code.el     | 120 ------------
 guix/scripts/style.scm | 415 +++++++++++++++++++++++++++++++++++------
 tests/style.scm        | 162 +++++++++++++++-
 5 files changed, 571 insertions(+), 204 deletions(-)
 delete mode 100755 etc/indent-code.el

base-commit: 637dec9d45db4df2a3e6aa565fa2c5cf6bb77768
-- 
2.33.0