Может ли 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 оставил форматирование на месте.
Ответы
Ответ 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