Может ли clang-format выровнять для меня блок #defines?

У меня есть исходный файл, содержащий некоторые строки вроде этого:

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a

Со всеми значениями, хорошо выровненными. К сожалению, clang-format делает это:

#define ARC_V2_LP_START 0x002
#define ARC_V2_LP_END 0x003
#define ARC_V2_STATUS32 0x00a

Я нашел параметры AlignConsecutiveDeclarations и AlignConsecutiveAssignments, но ничего, что выровняло бы последовательные #defines. Можно ли это сделать?

Ответ 1

[ОБНОВЛЕНИЕ]

В конце концов, запрос на удаление операций прошел, и начиная с версии 9.0.0 clang является действующей. Функциональность активируется опцией AlignConsecutiveMacros: true.

[ОРИГИНАЛ]

Как ни странно, эта функция еще не реализована в Clang; опция форматирования для последовательных макросов в настоящее время отсутствует.

Многим разработчикам это интересно, и есть рабочий запрос, который ждал утверждения в течение многих лет: https://reviews.llvm.org/D28462?id=93341

Вы можете интегрировать его или просто подождать, если они добавят его в официальную ветку, но на данный момент я сомневаюсь, что они будут.

Ответ 2

При быстром взгляде на параметры стиля это выглядит так, что в данный момент для этого нет выбора. Единственный вариант, который касается предварительной обработки, которую я вижу, это IndentPPDirectives который имеет дело с отступами блоков #if.

Ответ 3

Я не мог найти никакой возможности для этого. Clang уничтожил все мои определения, которые были автоматически выровнены emacs.

Ответ 4

Обратите внимание, что у clang-format-9 и выше есть опция AlignConsecutiveMacros: true, которая может помочь вам.

Чтобы установить clang-format-9 в Ubuntu/Debian, вам нужно проверить http://apt.llvm.org/.

Например, если у вас Ubuntu 16.04/xenial, вам нужно сделать следующее:

sudo sh -c 'echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo apt update
sudo apt install clang-format-9

Можно обрабатывать Trusty/Ubuntu 14.04 таким же образом.