clang-format hat 2 Optionen namens BinPackParameters
und
%Code%. Sie scheinen zu steuern, wie Funktionsdeklarationen und Funktionsaufrufe eingerückt werden.
BinPackArguments
scheint das erwartete Ergebnis für eine Funktionsdeklaration zu liefern, aber BinPackParameters
scheint nicht so zu funktionieren, wie man es für einen Funktionsaufruf erwarten würde.
Hier ist eine einfache Testdatei:
%Vor%Und so ist es formatiert:
%Vor% Meine BinPackArguments
-Datei ist wie folgt:
Meine Version im Clang-Format ist: .clang-format
Wenn sowohl 3.6.0 (tags/RELEASE_360/final)
als auch BinPackParameters
falsch sind, hätte ich erwartet, dass ich den gleichen Einzug für den Funktionsaufruf bekomme, wie ich es für die Funktionsdeklaration bekomme.
Irgendeine Idee, was ich falsch mache?
Versuchen Sie, ColumnLimit
auf 0 zu setzen. Es sieht so aus, als ob diese Option "überschreibt" oder eine höhere Priorität als die Optionen BinPackParameters
und BinPackArguments
hat.
Ich glaube nicht, dass Sie irgendetwas falsch machen. Was passiert, ist, dass das clang-Format erkennt, dass die Zeile, in der Sie die Funktion aufrufen, länger ist als Ihr Spaltenlimit (80 Zeichen in Ihren Einstellungen). Ihr AlignAfterOpenBracket
wird auf false gesetzt, so dass das clang-Format die Argumente in einer neuen Zeile platziert (Beachten Sie, dass AlignAfterOpenBracket
zusätzliche Möglichkeiten in späteren Versionen des clang-Formats erhalten hat).
Sie haben beide BinPack...
-Einstellungen auf "false" gesetzt, es gibt jedoch eine zusätzliche Einstellung, die die Funktionsdeklaration gegenüber dem Funktionsaufruf AllowAllParametersOfDeclarationOnNextLine
(in Ihrem Beispiel auf false gesetzt) steuert. Bei der Funktionsdeklaration werden alle Parameter in separaten Zeilen angezeigt, wenn sie nicht in die gleiche Zeile wie der Funktionsname passen. Für den Funktionsaufruf gibt es keine entsprechende Einstellung.
In Ihrem Fall werden die Argumente, die Sie der Funktion geben, in der nächsten Zeile nach dem Funktionsnamen platziert. Die Länge der zweiten Zeile ist & lt; 80, also macht clang-format nichts mehr damit. Wenn die Argumentenzeile länger als Ihr Spaltenlimit gewesen wäre, hätte das Clang-Format sie in separaten Zeilen platziert.
Die Antwort lautet also, dass es ab Version 3.9 keine Möglichkeit mehr gibt, das clang-Format so zu konfigurieren, dass jedes Argument in einer eigenen Zeile steht, wenn sie in eine Zeile passen.
BinPack * -Optionen, die auf "false" gesetzt sind, erzwingen, dass Parameter / Argumente entweder alle in einer Zeile oder alle in einer separaten Zeile stehen. Beide Fälle sind erlaubt, aber nicht gemischt, z. zwei Parameter in einer Zeile und der Rest in einer anderen Zeile ist nicht erlaubt.
Dasclang-Format scheint für jeden Fall das Format "Alles in einer Zeile" und "Jede Zeile in einer separaten Zeile" auszuwählen.
Tags und Links clang clang-format