[cfe-dev] Question about clang-format
Graham St Jack via cfe-dev
cfe-dev at lists.llvm.org
Thu Nov 12 16:01:43 PST 2015
Hi all,
I am looking at using clang-format, and like everyone else with a
pre-existing quirky style, there are some things that clang-format
doesn't seem to handle for me.
Most of the issues are minor - we can just redefine our style, or they
occur rarely enough for it not to matter.
Some things that stand out as odd though (and make adoption difficult)
are the following blocks of code formatted with this .clang-format file,
using clang-format-3.8 built from trunk source yesterday.
BasedOnStyle: LLVM
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline
BinPackParameters: false
BinPackArguments: false
BraceWrapping:
IndentBraces: false
AfterNamespace: false
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
BreakBeforeBraces: Custom
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
ConstructorInitializerAllOnOneLineOrOnePerLine: true
MaxEmptyLinesToKeep: 1
----------------------------------------
int * err = 0;
ino_t_xx dir_inode = 0;
gen_t dir_gen = 0;
Here, the variables and equal-signs are lined up beautifully, but the
star isn't hard up against 'err' - which I would have expected given the
fact that LLVM sets PointerAlignment to Right. Looking into the
implementation (and doing some experiments), it looks like 'Right' just
means "no need to put a space to the right of a star" - but plenty of
spaces can be inserted to align the variable. Is this intentional, and
if so, is there a plan to add a new option to align pointers/references
to the right (as distinct from not-left like now)?
Since (regrettably) in C/C++, "pointerness" is associated with the
variable and not the type, having the star hard up against the variable
seems to me to be something that a lot of people would want.
----------------------------------------
static int find_highest_index(ino_t base_inode,
gen_t base_gen,
int fd,
uint32_t *highest_index)
This looks like a bug - if it aligns some of the parameters, it should
align all of them.
----------------------------------------
static int find_highest_index(
ino_t base_inode, gen_t base_gen, int fd, uint32_t *highest_index,
bool dummy)
This looks like a bug too - I added an extra parameter with a short type
to demonstrate that the first and last parameters aren't aligned, but it
put them all on one line. If there is an extra configuration parameter
that would prevent this, please let me know.
----------------------------------------
static int find_highest_index(ino_t base_inode,
int fd,
uint32_t *highest_index,
bool dummy)
Here is the example that shows the first and last parameter aren't
aligned, but the others are.
Thanks
--
Graham St Jack | Software Engineer | Quantum
More information about the cfe-dev
mailing list