.clang-format Einstellung für keine neue Zeile bei Funktion/Methode

Versuche gerade die Auto-Formatierung in der IDE 2 zu optimieren (Strg-T). Dafür muss man die .clang-format Datei ggf. anpassen.
Das ist durchaus ein Wissenschaft für sich.

Ich suche verzweifelt, wie ich den Zeilenumbruch nach int, void, bool etc. vermeiden kann.

Aktuelle Darstellung:

//-----------------------------------------------------------------------------------------------------------------------------------------------
void
WiFiGotIP ( WiFiEvent_t event, WiFiEventInfo_t info )
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Aufruf, wenn WLAN verbunden ist und eine IP-Adresse vorliegt
{
#ifdef DEBUG
    Serial.print ( "... WLAN verbunden, IP Adresse: " );
    Serial.println ( WiFi.localIP () );
#endif
}

Gewünscht:

//-----------------------------------------------------------------------------------------------------------------------------------------------
void WiFiGotIP ( WiFiEvent_t event, WiFiEventInfo_t info )
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Aufruf, wenn WLAN verbunden ist und eine IP-Adresse vorliegt
{
#ifdef DEBUG
    Serial.print ( "... WLAN verbunden, IP Adresse: " );
    Serial.println ( WiFi.localIP () );
#endif
}

Vielleicht Dadurch sollten deine Funktionen so formatiert werden, wie du es wünschst, ohne einen Zeilenumbruch nach void, int, bool, usw.

---
Language:        Cpp
# Other settings...

# Rule for line breaks after function types
BinPackParameters: false

Hat leider nicht funktioniert.

:frowning:

https://clang.llvm.org/docs/ClangFormatStyleOptions.html

Da steht nix drin?

Hast du an der Datei vorher was gedreht? Bei mir sieht die Formatierung in der 2.1.1. OK aus.

Ich hätte ja eher getippt, das irgendwo im Code was drin ist, was für dieses Aussehen sorgt.
Mir ist keine Formatierung bekannt, die nach einem einleitenden void (oder sonstigem Rückgabetyp) einen Umbruch generiert...

noch n Nachtrag:
Was passiert, wenn Du im Root-Verzeichnis von deinem Sketch eine leere Format-Datei anlegst?

~\sketchordner\sketch_sep4a\

drin liegt eine Datei sketch_sep4a.ino
Neu angelegt wird .clang-format ohne weiteren Inhalt.
Alternativ durch das Original ersetzen:

Ich habe in meinem Benutzerverzeichnis eine lokale Version der .clang-format Datei gespeichert. Die dominiert dann die standardmäßig ausgelieferten Formatierungen.

https://forum.arduino.cc/t/clang-setup-where-is-clang-format/1016866/16

Es gibt diverse Online-Tools und Windows-Programme zum Verstellen der Parameter und zur Anzeige der Auswirkungen an einem Test-Code. Hat aber bislang nix geholfen.

Das ist eine Wissenschaft für sich.

Was ich auch nicht gefunden habe, sind Parameter für Einrückungen für #if / #endif Präprozessoranweisungen, das war unter IDE 1 besser.

Die war da schon. Das ist eine globale Version. kannst Du hier nachlesen.

Warum machst Du nicht das, was ich da oben geschrieben habe?

Und was ist eigentlich Dein Problem? Du scheinst Dein System eher verändern zu wollen und hast es damit ganz und gar durcheinander gebracht.

Sag mal Du bist ja besser mit englisch als ich, aber den versteh ich wirklich nicht.
https://clang.llvm.org/docs/ClangFormatStyleOptions.html
Und dort der Abschnitt
AlwaysBreakAfterReturnType

Bitte mal genau hinschauen.
Da ist doch der Umbruch.... :face_with_monocle:

Ich bin mir nicht sicher, ob ich Ihre Frage oder Ihren Standpunkt verstanden habe.

Guten Morgen,
Die Frage ist, ob der Eintrag:
AlwaysBreakAfterReturnType
in der .clang-format den Umbruch bewirkt.

Dafür gibt es aber zwei Einträge, die dafür verantwortlich sein könnten

  1. RTBS_All
  2. RTBS_AllDefinitions

oder täusche ich mich?
Ich versteh nicht, warum in dem example mit class gearbeitet wird. Das verwirrt mehr, als das es hilft.

Es gibt 3 Speicherorte:

  • globale Version, Standard der IDE: C:\Users\Name\AppData\Local\Programs\Arduino IDE_2.0\resources\app\node_modules\node-addon-api
  • "private", lokale Version: C:\Users\Name.arduinoIDE
  • Sketch-spezifische Version: im sketch-Verzeichnis

Die sketch-spezifische Datei und deren Einstellungen dominiert wohl die private und die wiederum die globale .clang-format-Datei.

https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-customize-auto-formatter

Hat leider keine Auswirkung.

Guten Morgen,

Gute Frage, ich weiß es nicht (vielleicht würde das Testen des veralteten AlwaysBreakAfterDefinitionReturnType helfen?)

Es wäre interessant zu experimentieren, um zu sehen, was mit widersprüchlichen Anforderungen passiert

Dann von mir mein Vorgehen:

  • IDE beenden
  • Alle .clang-formatter löschen
  • die Version von github in den Sketchordner
  • IDE starten

Ich verschaff mir ggfls. heute Zugang zu einem Windows8-Rechner und werd mal sehen, was die Einstellung (siehe #14) bewirkt. Vorausgesetzt ich bekomm da eine IDE2 zum laufen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.