выравнивание объявлений функций в clang-формате

У меня проблема с выравниванием объявления функции.

Рассмотреть возможность:

RplInstanceS* RplGetInstance(inst_t instID, uint8_t createFlag);
RplDagS* RplGetDag(RplInstanceS* inst, RplAddrS* dagID, uint8_t createFlag);
void RplFreeInstance(RplInstanceS* inst, uint8_t forced);
void ResetDioTrickle(RplDagS* dag);
RplDagS* GetNextInuseDag(int* state);
void    RplFreeAllInstances(void);
uint8_t CountAllInstances(void);
uint8_t StartAllInstances(void);

Я надеялся, что может быть опция clang-format для преобразования его в:

RplInstanceS* RplGetInstance(inst_t instID, uint8_t createFlag);
RplDagS*      RplGetDag(RplInstanceS* inst, RplAddrS* dagID, uint8_t createFlag);
void          RplFreeInstance(RplInstanceS* inst, uint8_t forced);
void          ResetDioTrickle(RplDagS* dag);
RplDagS*      GetNextInuseDag(int* state);
void          RplFreeAllInstances(void);
uint8_t       CountAllInstances(void);
uint8_t       StartAllInstances(void);

person takladev    schedule 02.05.2019    source источник
comment
Хороший вопрос, было бы еще интересно, как настроить clang-format, чтобы не разрушать такой расклад.   -  person mch    schedule 02.05.2019


Ответы (1)


Для функций нет опции, но есть опция AlignConsecutiveDeclarations, которая, если установлена ​​в true, выравнивает последовательные объявления.

Это можно использовать вместе с опцией PointerAlignment со значением, установленным на PAS_Left (в конфигурации: слева), который будет выравнивать указатель по левому краю.

Сочетание этих двух вариантов должно дать вам то, что вы ищете.

person P.W    schedule 02.05.2019
comment
Извините, кажется, параметры не работают с clang-format-3.8, но с clang-format-6.0, похоже, работают нормально. - person takladev; 03.05.2019