Einleitung
Für die Formatierung der Codes mit STRG-T benutzt Arduino Artistic Style.
Leider ist Arduino bei Version 2.0.5.1 stehen geblieben siehe Github, obwohl AStyle bei Version 3.1 liegt.
Mit der aktuellen Version sind viele Fixes bei und es ergeben sich zudem zusätzliche Formatierungsoptionen, wie z.B. pad-comma oder add-one-line-braces etc. Siehe die Release Notes seit 2.0.6. lesen.
Ich hab jetzt die Ruhe gehabt und das mal in aktueller Version compiliert.
Die folgende Anleitung fürs selbst compilieren ist für Ubuntu/Linux-User gedacht und beschreibt das zu einer 64bit-Version.
Wer nicht selbst compilieren will, kann die angehängte fertige Datei verwenden.
Anschliessend die Anleitung wo die hin kommt und wie die Formatierungseinstellungen gesetzt werden.
selbst compilieren
Es muss installiert sein: Das Java-Open-JDK in Version 8. Version 11 geht nicht. Ich hab das Gesamtpaket eingespielt
sudo apt-get install openjdk-8-jre openjdk-8-jdk
Nach der Installation liegt das jdk unter /usr/lib/jvm/java_8_openjdk-amd64
Es wird gebraucht:
Das Artistic-Style Archiv
Das Archiv irgendwohin auspacken. Ich habs ins homeverzeichnis gelegt.
Jetzt müssen 4 Zeilen in den Quellen geändert werden. Siehe Java_Package_Patch
Im Ordner ~/astyle_3.1_linux/astyle/src
befindet sich die Datei astyle_main.cpp
Die Zeile:
jstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass)
ist zu ersetzen durch:
jstring STDCALL Java_cc_arduino_packages_formatter_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass)
Und
jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,
durch
jstring STDCALL Java_cc_arduino_packages_formatter_AStyleInterface_AStyleMain(JNIEnv* env,
Speichern.
Dann öffnen astyle_main.h
und ändern:
jstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass);
durch
jstring STDCALL Java_cc_arduino_packages_formatter_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass);
und
jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,
durch
jstring STDCALL Java_cc_arduino_packages_formatter_AStyleInterface_AStyleMain(JNIEnv* env,
speichern.
Jetzt kann compiliert werden.
Wir springen zum make-File.
cd ~/astyle_3.1_linux/astyle/build/gcc
und dort folgendes ausführen:
CFLAGS="-m64 -Os -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux" LDFLAGS="-m64 -s" make java
Danach findet sich im Ordner gcc ein Unterordner bin
in der eine Datei libastylej.so.3.1.0
vorhanden ist.
Diese umbenennen in libastylej.so
Integration und Formatieroptionen
Die IDE muss geschlossen sein.
Jetzt ab in den "Arduino-Programmordner"/lib
und dort die Datei libastylej.so
umbenennen bzw. sichern. Dann die neue libstylej.so dort einfügen.
Damit ist alles erledigt.
Um nun die einzelnen Möglichkeiten der Formatierung auszuprobieren suchst Du im selben Ordner die Datei formatter.conf
Wenn die IDE geschlossen ist, kann diese bearbeitet werden.
Die Datei wird nur einmal beim IDE-Start gelesen!
Alles, was an Optionen vorhanden ist, kann jetzt dort eingetragen werden ein paar Dinge sind ja schon vorhanden, das Muster ist das selbe.
Drauf achten, das sich die Optionen nicht gegenseitig aufheben.
Epilog
Eigentlich müsste das auch unter Windows gehen. (64bit) Wer Lust hat, kanns ja ausprobieren, kaputt machen kann man damit nichts.
Vielleicht hilfts ja jemandem.
libastylej.zip (96,3 KB)
Meine - aktuell (1.12.2022) - benutzten Formatiereinstellungen
Die Beschreibung der Einträge siehe oben der Link zu artistic Style.
Der wichtigste Eintrag ist delete-empty-lines
Alles was erst mit der aktuellen Version geht ist kommentiert.
# This configuration file contains a selection of the available options provided by the formatting tool "Artistic Style"
# http://astyle.sourceforge.net/astyle.html
#
# If you wish to change them, don't edit this file.
# Instead, copy it in the same folder of file "preferences.txt" and modify the copy. This way, you won't lose your custom formatter settings when upgrading the IDE
# If you don't know where file preferences.txt is stored, open the IDE, File -> Preferences and you'll find a link
mode=c
# Brace Style Options
style=allman
# Brace Modify Options
attach-namespaces
attach-classes
attach-inlines
attach-extern-c
attach-closing-while # Erst ab Version 3
# 2 spaces indentation
indent=spaces=2
# also indent macros
indent-preprocessor
# indent classes, switches (and cases), comments starting at column 1
indent-classes
indent-modifiers
indent-switches
indent-cases
indent-col1-comments
indent-namespaces
indent-continuation=4 # Erst ab Version 3
indent-labels
indent-preproc-define
indent-col1-comments
max-continuation-indent=50 # Erst ab Version 3
# put a space around operators
pad-oper
# put a space after if/for/while
pad-header
# Kill all lines within Braces and without Code
delete-empty-lines
#
align-pointer=name
align-reference=name
#
break-one-line-headers # Erst ab Version 3
add-braces # Erst ab Version 3
add-one-line-braces # Erst ab Version 3
#
attach-return-type # Erst ab Version 3
#
keep-one-line-blocks
#
convert-tabs
#
close-templates
#
remove-comment-prefix
#
break-after-logical
#
pad-method-prefix
pad-return-type # Erst ab Version 3
pad-param-type # Erst ab Version 3
#
align-method-colon
pad-method-colon=after