Jak zapobiec łamaniu przypisania inicjalizacji przez wcięcie GNU, np. „= {0};”

0

Zobacz następujący przykład.

$ indent --version
GNU indent 2.2.10
$ cat foo.c
void foo()
{
    struct {
        int a;
        int b;
    } v = { 0 };
}
$ indent -st foo.c
void
foo ()
{
  struct
  {
    int a;
    int b;
  } v =
  {
  0};
}
$

Nie chcę = { 0 };być sformatowany na

=
{
0};
pynexj
źródło

Odpowiedzi:

1

Dotyczy to również wersji 2.2.11. Patrząc na kod, wydaje się, że jest to błąd polegający na tym, że inicjatory bloków nie są poprawnie wykrywane. W takim przypadku wcięcie wymusza nową linię po „{”. Włamałem się do niego w ciągu ostatnich kilku dni i naprawiłem ten błąd w mojej kopii roboczej, tak aby Twój plik był sformatowany w następujący sposób:

$ src/indent -npro -st foo.c
void
foo ()
{
  struct
  {
    int a;
    int b;
  } v = { 0 };
}

Zapraszam do sprawdzenia mojej kopii roboczej i wypróbowania jej. W przeciwnym razie prawdopodobnie będziesz musiał poczekać, aż zostanie naprawiony.

tah
źródło