Может ли 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 таким же образом.