Может ли формат clang выравнивать назначения переменных или макросов в столбцах?

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

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-формата не всегда целесообразно делать это, но когда код, уже отформатированный вручную, как и указанный код, было бы неплохо, чтобы clang-формат оставил форматирование на месте.

27

Решение

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

От документы

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

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

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

9

Другие решения

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

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

3

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

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

AlignConsecutiveAssignments = true

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

1