Kann clang-format einen Block von #defines für mich ausrichten?

Lesezeit: 3 Minuten

Benutzer-Avatar
Erik Nyquist

Ich habe eine Quelldatei, die einige Zeilen wie diese enthält;

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a

Mit allen Werten schön aufeinander abgestimmt. Leider macht das Clang-Format das;

#define ARC_V2_LP_START 0x002
#define ARC_V2_LP_END 0x003
#define ARC_V2_STATUS32 0x00a

Ich habe die Optionen AlignConsecutiveDeclarations und AlignConsecutiveAssignments gefunden, aber nichts, was aufeinanderfolgende #defines ausrichtet. Ist dies möglich?

  • Eine solche Option scheint es nicht zu geben. Ich arbeite derzeit daran, es als neue Stiloption AlignConsecutiveMacros hinzuzufügen. Sie können es hier auf meiner Gabel sehen github.com/eriknyquist/clang/tree/align_defines (Ich werde keinen direkten Link zum Commit posten, da ich ihn ständig ändere. Sehen Sie sich einfach die Liste der Commits an und wählen Sie den neuesten aus.)

    – Erik Nyquist

    5. Januar 2017 um 4:29 Uhr

  • Planen Sie, einen Pull-Request einzureichen? Sieht für mich nach einer sinnvollen Ergänzung aus!

    – aufgedreht

    12. Dezember 2017 um 10:13 Uhr

  • @ErikNyquist Danke für deine Pull-Anfrage. Irgendeine Idee, warum es immer noch bei der Überprüfung hängen bleibt?

    – Tim

    11. April 2018 um 6:03 Uhr

  • (Kopieren und Einfügen von einem anderen Beitrag, in dem ich gerade dieselbe Frage beantwortet habe): 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 dass ich umgesetzt haben). 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 21:02 Uhr

  • @ErikNyquist Danke für die Informationen. Ich habe das Clang-Format mit Ihrem Patch erstellt und wir verwenden es jetzt seit Monaten, es funktioniert gut. Schade für ihre mangelnde Reaktionsfähigkeit, es ist offensichtlich, dass viele Leute diese Funktion wollen …

    – Tim

    20. Juni 2018 um 6:52 Uhr

Benutzer-Avatar
Maldus

[UPDATE]

Die Pull-Anfrage des Ops wurde schließlich durchgegangen und ist seit Clang-Version 9.0.0 live. Die Funktionalität wird durch die aktiviert AlignConsecutiveMacros: true Möglichkeit.

[ORIGINAL]

Seltsamerweise muss diese Funktion noch in clang implementiert werden; die Formatierungsoption für aufeinanderfolgende Makros fehlt derzeit.

Viele Entwickler sind interessiert und es gibt einen funktionierenden Pull-Request, der seit Jahren auf Genehmigung wartet: https://reviews.llvm.org/D28462?id=93341

Sie können es integrieren oder einfach warten, ob sie es im offiziellen Zweig hinzufügen, aber an diesem Punkt bezweifle ich, dass sie es tun werden.

  • Sie haben vielleicht nicht bemerkt, dass der Pull-Request vor einem Jahr von OP gestellt wurde, nachdem er diese Frage gestellt hatte. Die Frage ist jedoch unbeantwortet, daher wäre es für @ErikNyquist am besten, eine Antwort zu akzeptieren.

    – KamilCuk

    1. November 2018 um 15:04 Uhr

  • Ein Update: Es sieht so aus, als ob die Änderung akzeptiert wurde und bereit ist zu landen! reviews.llvm.org/D28462?id=93341#1498067

    – Wegzug00

    14. Mai 2019 um 12:57 Uhr

  • und nach ~2 Jahren wurde mein Patch endlich zusammengeführt! Endlich haben wir die Ausrichtung für PP-Makros 🙂 clang.llvm.org/docs/ClangFormatStyleOptions.html

    – Erik Nyquist

    21. August 2019 um 22:04 Uhr

Auf einen schnellen Blick über die Stiloptionen es sieht so aus, als gäbe es derzeit keine Option dafür. Die einzige Option, die sich mit der Vorverarbeitung befasst, die ich sehe, ist IndentPPDirectives das befasst sich mit Einrückungen von #if Blöcke.

Auch hierzu habe ich keine Option gefunden. Clang hat alle meine Definitionen zerstört, die automatisch von Emacs ausgerichtet wurden.

  • Das neueste Clang-Format unterstützt das Ausrichten von Makros mit AlignConsecutiveMacros

    – takladew

    10. September 2019 um 11:47 Uhr

Benutzer-Avatar
Takladew

Beachten Sie, dass clang-format-9 und höher eine Option von haben AlignConsecutiveMacros: true das kann den Trick für Sie tun.

Um clang-format-9 auf Ubuntu/Debian zu installieren, müssen Sie überprüfen http://apt.llvm.org/.

Wenn Sie beispielsweise Ubuntu 16.04/xenial haben, müssen Sie Folgendes tun:

sudo sh -c 'echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo apt update
sudo apt install clang-format-9

Es ist möglich, Trusty/Ubuntu 14.04 auf die gleiche Weise zu handhaben.

1370300cookie-checkKann clang-format einen Block von #defines für mich ausrichten?

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

Privacy policy