Kann Clang-Format Variablen- oder Makrozuweisungen in Spalten ausrichten?

Lesezeit: 3 Minuten

Benutzeravatar von syvex
Syvex

Ist es möglich, Variablenzuweisungen im Clang-Format in Spalten auszurichten? Zum Beispiel:

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
};

ist besser lesbar als:

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
};

Mir ist klar, dass es für Clang-Format möglicherweise nicht praktisch ist, dies immer zu tun, aber wenn der Code bereits wie der besagte Code manuell formatiert wurde, wäre es schön, wenn das Clang-Format die Formatierung beibehalten würde.

  • entkrusten hat eine Option dafür, aber kein Clang-Format.

    – Jarod42

    24. November 2014 um 18:10 Uhr

  • Es ist schockierend für mich, dass es dies nicht unterstützt. Macht das Clang-Format meiner Meinung nach unbrauchbar.

    – David

    10. Dezember 2014 um 18:15 Uhr

  • Die entsprechende Option von uncrustify ist: align_pp_define_span

    – Cofiz

    7. Januar 2015 um 5:48 Uhr

Es sieht so aus, als ob 3.7 so etwas unterstützt (noch nicht getestet).

Von dem Dokumente

AlignConsecutiveAssignments (bool)
Wenn wahr, werden aufeinanderfolgende Zuweisungen ausgerichtet.

Dadurch werden die Zuweisungsoperatoren aufeinanderfolgender Zeilen ausgerichtet. Dies führt zu Formatierungen wie code int aaaa = 12; int b = 23; int ccc = 23; Endcode

(sieh)

  • @syvex, musstest du etwas Besonderes tun, damit das funktioniert, bitte? Ich bekomme error: unknown key 'AlignConsecutiveAssignments'

    – James Webster

    30. Juni 2015 um 11:29 Uhr


  • Dies funktioniert eigentlich nicht für Präprozessor-Makros. Ich versuche derzeit, dies als separate Option hinzuzufügen, siehe den neuesten Commit in diesem Zweig github.com/eriknyquist/clang/tree/align_defines

    – Erik Nyquist

    5. Januar 2017 um 4:25 Uhr

  • Hat Eriks Verpflichtung es jemals geschafft, zu klirren? Es ist lächerlich, dass sie keine Option zum Ausrichten von Makros haben. Warum dauert die Überprüfung und Annahme so lange?

    – SFbay007

    13. Juli 2017 um 8:40 Uhr

  • @ErikNyquist Hast du es geschafft, das in LLVM zu bringen?

    – Derich

    13. Februar 2018 um 15:13 Uhr

  • Nein, noch offen zur Überprüfung. Es gab nur eine Menge Abwanderung, wenn Sie sich den Link ansehen, den ich zur Überprüfung gepostet habe, sehen Sie alle Änderungen, die angefordert wurden (und die ich implementiert habe). Dann war lange, lange Stille, und im letzten Monat ist gerade jemand zurückgekommen und hat im Wesentlichen darum gebeten, dass das Ganze überarbeitet wird, und ich habe einfach keine Zeit/Energie mehr…..

    – Erik Nyquist

    10. Juni 2018 um 20:09 Uhr

Clang-Format hat dazu keine Option.

Wenn Sie clang-format anweisen möchten, bestimmte Zeilen in Ruhe zu lassen, können Sie dies mit tun // clang-format off und // clang-format on Kommentare.

  • @syvex Welche Version verwendest du? Es sieht so aus, als ob es sich um eine neue Funktion seit der Version 3.5 handelt.

    – Namen53

    24. November 2014 um 19:16 Uhr

Ich habe es mit getestet https://github.com/mattga/ClangFormat-Xcode/tree/clang_3.7 Dies ist ein Zweig von ClangFormat-Xcode, der 3.7 unterstützt.

Ich könnte a = 9999 formatieren; Geben Sie die Liste ein, wie ich es wollte, per Option

AlignConsecutiveAssignments = true

. Aber die Definitionen wurden nicht angeglichen. Gibt es einen Hinweis, sie auszurichten?

  • AlignConsecutiveDeclarations könnte das sein, wonach Sie suchen.

    – orion elenzil

    19. Februar 2020 um 17:09 Uhr

Für Makros: Es sieht so aus, als könnten Sie dies erreichen, sobald Clang 10 veröffentlicht wird, indem Sie hinzufügen AlignConsecutiveMacros: true für dich .clang-format

https://reviews.llvm.org/D28462

Sie können diese Optionen verwenden: AlignConsecutiveMacros: true ref:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
llvm-Version unterstützen: >=10.0

1386590cookie-checkKann Clang-Format Variablen- oder Makrozuweisungen in Spalten ausrichten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy