<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hello,</p>
<p>The systemd codebase is discussing the adoption of clang-format
as the formatting tool for its code base.</p>
<p>See conversation here: <a class="moz-txt-link-freetext"
href="https://github.com/systemd/systemd/pull/11308">https://github.com/systemd/systemd/pull/11308</a></p>
<p>However there are a couple of issues with clang-format for the
systemd common style, which might be solvable by adding some new
additional styles, which also be beneficial for other projects.</p>
<p><br>
</p>
<p><b>Suggestions:</b></p>
<p>- add a custom indent for pp directives</p>
<p>The general indent of the codebase is 8 spaces. But the pp indent
is only two spaces. As the PP are fundamentally different from the
C code, IMHO it makes sense to allow a different indent for these
elements.</p>
<p>Additionally PP are aligned to the very left. Keeping the indent
low helps identifying PP from C code visually, as the PP generally
happens on the left and the C code on the right.</p>
<p>--> new style option "<strong>IndentPPDirectiveWidth</strong>"
which defaults to 0. When zero the IndentWidth<strong> </strong>value
is used for indentation. When greater zero this value is used for
indentation.<strong><br>
</strong></p>
<p><strong><br>
</strong></p>
<p>- no space after foreach macro, with SpaceBeforeParens set to
Always<strong><br>
</strong></p>
<p>systemd is heavily using foreach macros throughout its code. In
general<b> </b><b>SpaceBeforeParens: Always</b><strong> </strong>matches
the style of the project. However the foreach macros should not
have the space between foreach macro name and parens. <br>
</p>
<p>--> add new possible value "<b>ExceptFor</b><strong>EachMacros</strong>"
to <strong>SpaceBeforeParens,</strong> which behaves as <strong>Always,</strong>
except that foreach macros should not have the space between
foreach macro name and parens.<strong> </strong></p>
<p><br>
</p>
<p>- enum breaking behaviour<strong><br>
</strong></p>
<p>when using enums with an indent width of 8 spaces and no brace
wrapping after enum (BraceWrapping: ... AfterEnum: false)</p>
<p>example:</p>
<p>```<br>
enum { ARG_VERSION = 0x100,<br>
};<br>
```<br>
</p>
<p>i would have expected the following output:<br>
```<br>
enum { <br>
ARG_VERSION = 0x100,<br>
};<br>
```</p>
<p>Is this behaviour intended, or is this a bug?</p>
<p><br>
</p>
Cheers, Sebastian Jennen
</body>
</html>