web-dev-qa-db-ja.com

clang-formatは、変数またはマクロの割り当てを列に揃えることができますか?

Clang形式で変数の割り当てを列に揃えることは可能ですか?例えば:

int someInteger             = 42;
std::string someString      = "string";
const unsigned someUnsigned = 42;

#define SOME_INTEGER        42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT       42

enum Enum {
    ONE   = 1,
    TWO   = 2,
    THREE = 3,
    FOUR  = 4,
    FIVE  = 5,
    SIX   = 6,
    SEVEN = 7
};

より読みやすいです:

int someInteger = 42;
const unsigned someUnsigned = 42;
std::string someString = "string";

#define SOME_INTEGER 42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT 42

enum Enum {
    ONE = 1,
    TWO = 2,
    THREE = 3,
    FOUR = 4,
    FIVE = 5,
    SIX = 6,
    SEVEN = 7
};

Clang-formatが常にこれを行うのは実用的ではないかもしれませんが、コードが前述のコードのようにすでに手動でフォーマットされている場合、clang-formatがフォーマットをそのままにしておくとよいでしょう。

34
syvex

3.7はこのようなものをサポートしているようです(まだテストされていません)。

docs から

AlignConsecutiveAssignments(bool)
trueの場合、連続する割り当てを調整します。

これにより、連続する行の代入演算子が整列します。これにより、コードint aaaa = 12のようなフォーマットになります。 int b = 23; int ccc = 23;エンドコード

(原文ママ)

14

Clang形式には、これを行うオプションはありません。

特定の行をそのままにしておくようにclang-formatに指示したい場合は、// clang-format offおよび// clang-format onコメントを使用してそれを行うことができます。

3
bames53

マクロの場合:AlignConsecutiveMacros: true.clang-formatに追加することで、clang10がリリースされたらこれを達成できるようです。

https://reviews.llvm.org/D28462

1
rhssk

3.7をサポートするClangFormat-Xcodeのブランチである https://github.com/mattga/ClangFormat-Xcode/tree/clang_3.7 を使用してテストしました。

A = 9999をフォーマットできます。オプションで必要なタイプリスト

AlignConsecutiveAssignments = true

。しかし、定義は一致していませんでした。それらを揃える兆候はありますか?

1
conecon