Подтвердить что ты не робот

Может ли clang-format выравнивать переменные или макросети в столбцах?

Можно ли присвоить переменные переменной clang-format в столбцах? Например:

int someInteger             = 42;
std::string someString      = "string";
const unsigned someUnsigned = 42;

#define SOME_INTEGER        42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT       42

enum Enum {
    ONE   = 1,
    TWO   = 2,
    THREE = 3,
    FOUR  = 4,
    FIVE  = 5,
    SIX   = 6,
    SEVEN = 7
};

более читаем, чем:

int someInteger = 42;
const unsigned someUnsigned = 42;
std::string someString = "string";

#define SOME_INTEGER 42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT 42

enum Enum {
    ONE = 1,
    TWO = 2,
    THREE = 3,
    FOUR = 4,
    FIVE = 5,
    SIX = 6,
    SEVEN = 7
};

Я понимаю, что для clang-format это может быть нецелесообразно всегда, но когда код уже был отформатирован вручную, как указанный код, было бы неплохо, если бы clang-format оставил форматирование на месте.

4b9b3361

Ответ 1

Похоже, что 3.7 поддерживает что-то вроде этого (еще не тестировалось).

Из docs

AlignConsecutiveAssignments (bool)
Если true, выравнивает последовательные назначения.

Это приведет к выравниванию операторов присваивания последовательных строк. Это приведет к созданию форм, таких как code int aaaa = 12; int b = 23; int ccc = 23; ENDCODE

(так в оригинале)

Ответ 2

У Clang-формата нет возможности сделать это.

Если вы хотите, чтобы clang-format оставил определенные строки в одиночку, вы можете сделать это с комментариями // clang-format off и // clang-format on.

Ответ 3

Я тестировал его с помощью https://github.com/mattga/ClangFormat-Xcode/tree/clang_3.7, который является ветвью ClangFormat-Xcode, поддерживающей 3.7.

Я мог бы форматировать a = 9999; введите список типов, как я хотел по опции

AlignConsecutiveAssignments = true

. Но определения не были выровнены. Есть ли какие-либо признаки для их выравнивания?

Ответ 4

Для макросов: похоже, что вы сможете сделать это, как только выйдет Clang 10, добавив AlignConsecutiveMacros: true к вам .clang-format

https://reviews.llvm.org/D28462