如何以 clang 格式对齐函数参数名称?
How can I align function parameter names in clang-format?
是否可以使用 clang-format
将结构成员和函数参数名称格式化为列?
例如:
struct
{
int alpha; //aligned to 'b' of "beta"
unsigned int beta;
MyObject *gamma; //aligned with 'g' not '*'
};
void foobar (int alpha, //aligned to 'b' of "beta"
unsigned int beta
MyObject *gamma) //aligned with 'g' not '*'
{
}
如果不可能,我可以通过某种方式扩展 clang-format 来实现吗?
嗯,可以近距离接触了
对于函数声明:
您可以设置BinPackParameters=false
,这将强制函数声明的所有参数在一行或每个在不同的行,并且它们将按照您显示的方式对齐。
(但在类型和标识符之间没有制表位。现在 afaik 在 clang 格式中这是不可能的。)
另请参阅选项 AllowAllParametersOfDeclarationOnNextLine
Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.
对于结构,我不认为你能做到这一点。
我自己过去曾为 clang-format 编写过补丁,我认为要像您建议的那样进行对齐需要做很多工作。您必须自己将相当多的 C++ 编写成 clang lib 格式才能支持这一点。
clang-format
最近(3.7 或 3.8)获得了更多调整对齐的选项,我在问题中提出的问题仍未得到完全支持,但我们现在可以更接近一点:
AlignConsecutiveDeclarations: true
如上所示对齐声明。
不幸的是,指针星号的格式控制似乎仍然有限,请参阅
根据您的 post,我得到以下信息:
struct
{
int alpha;
unsigned int beta;
MyObject * gamma;
};
void foobar( int alphaXXXXXXXXXX,
unsigned int betaXXXXXXXXX,
MyObject * gammaXXXXXXXX )
{
}
with BinPackArguments
and BinPackParameters
both false, and AlignConsecutiveAssignments
and AlignConsecutiveDeclarations
both set to true (documentation of these parameters).我不得不将变量的长度扩展到函数中,因为原始函数可以将所有变量都放在一行中。
是否可以使用 clang-format
将结构成员和函数参数名称格式化为列?
例如:
struct
{
int alpha; //aligned to 'b' of "beta"
unsigned int beta;
MyObject *gamma; //aligned with 'g' not '*'
};
void foobar (int alpha, //aligned to 'b' of "beta"
unsigned int beta
MyObject *gamma) //aligned with 'g' not '*'
{
}
如果不可能,我可以通过某种方式扩展 clang-format 来实现吗?
嗯,可以近距离接触了
对于函数声明:
您可以设置BinPackParameters=false
,这将强制函数声明的所有参数在一行或每个在不同的行,并且它们将按照您显示的方式对齐。
(但在类型和标识符之间没有制表位。现在 afaik 在 clang 格式中这是不可能的。)
另请参阅选项 AllowAllParametersOfDeclarationOnNextLine
Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.
对于结构,我不认为你能做到这一点。
我自己过去曾为 clang-format 编写过补丁,我认为要像您建议的那样进行对齐需要做很多工作。您必须自己将相当多的 C++ 编写成 clang lib 格式才能支持这一点。
clang-format
最近(3.7 或 3.8)获得了更多调整对齐的选项,我在问题中提出的问题仍未得到完全支持,但我们现在可以更接近一点:
AlignConsecutiveDeclarations: true
如上所示对齐声明。
不幸的是,指针星号的格式控制似乎仍然有限,请参阅
根据您的 post,我得到以下信息:
struct
{
int alpha;
unsigned int beta;
MyObject * gamma;
};
void foobar( int alphaXXXXXXXXXX,
unsigned int betaXXXXXXXXX,
MyObject * gammaXXXXXXXX )
{
}
with BinPackArguments
and BinPackParameters
both false, and AlignConsecutiveAssignments
and AlignConsecutiveDeclarations
both set to true (documentation of these parameters).我不得不将变量的长度扩展到函数中,因为原始函数可以将所有变量都放在一行中。