Der JetSym STX Formatter ist eine Erweiterung für Visual Studio Code zur automatischen Formatierung von JetSym Structured Text (*.stx, *.stxp).
Die Erweiterung sorgt für eine einheitliche Formatierung von Quellcode und Header-Dateien, verbessert die Lesbarkeit und unterstützt Entwickler bei der Einhaltung konsistenter Coding-Richtlinien.
Funktionen
Automatische Einrückung
- Korrekte Verschachtelung von
if, elseif, else und end_if
- Unterstützung für
case, for, while, repeat, loop, task, function und weitere Sprachkonstrukte
- Einheitliche Verwendung von Tabulatoren
Operator-Formatierung
- Automatische Formatierung von Zuweisungen und Ausdrücken
- Unterstützung für:
:=
+=
-=
*=
/=
=
<>
<=
>=
+
-
*
/
CASE-Formatierung
- Automatische Formatierung von
case-Blöcken
- Einrückung von Labels und Anweisungen
- Unterstützung für Kommentare innerhalb von CASE-Zweigen
Mehrzeilige Bedingungen
- Formatierung von mehrzeiligen
if- und elseif-Bedingungen
- Automatische Positionierung von
then
Header-Datei-Formatierung
- Spezielle Formatierungsregeln für Dateien mit der Endung
_h.stxp
- Unterstützung für:
TYPE
CONST
VAR
STRUCT
ENUM
BITS
Ausrichtung von Deklarationen
- Globale Ausrichtung von Doppelpunkten innerhalb von Header-Dateien
- Globale Ausrichtung von Gleichheitszeichen innerhalb von Konstantendefinitionen
ENUM- und BITS-Formatierung
- Automatische Ausrichtung von Einträgen
- Zusätzliche Einrückung innerhalb von Klammerblöcken
Kommentar-Erhaltung
- Zeilenkommentare bleiben unverändert erhalten
- Blockkommentare bleiben unverändert erhalten
- Header-Kommentare werden bei Ausrichtungsoperationen ignoriert
Schlüsselwort-Normalisierung
- Unterstützte STX-Schlüsselwörter werden automatisch in Kleinbuchstaben geschrieben
- Sorgt für ein konsistentes Erscheinungsbild des Quellcodes
Beispiele
IF-Anweisung
Vorher:
if a=1 then
b:=1;
else
b:=2;
end_if;
Nachher:
if a = 1 then
b := 1;
else
b := 2;
end_if;
CASE-Anweisung
Vorher:
case State of
0:
x:=0;
break;
1:
x:=1;
break;
end_case;
Nachher:
case State of
0:
x := 0;
break;
1:
x := 1;
break;
end_case;
FOR-Schleife
Vorher:
for i:=0 to 10 do
x:=x+i;
end_for;
Nachher:
for i := 0 to 10 do
x := x + i;
end_for;
WHILE-Schleife
Vorher:
while Counter<10 do
Counter:=Counter+1;
end_while;
Nachher:
while Counter < 10 do
Counter := Counter + 1;
end_while;
REPEAT-UNTIL
Vorher:
repeat
Counter:=Counter+1;
until Counter>10
Nachher:
repeat
Counter := Counter + 1;
until Counter > 10
Mehrzeilige IF-Bedingung
Vorher:
if A and
(B) and
C then
X:=1;
end_if;
Nachher:
if A and
(B) and
C
then
X := 1;
end_if;
Verschachtelte Schleifen
Vorher:
for i:=0 to 10 do
for j:=0 to 5 do
x:=i+j;
end_for;
end_for;
Nachher:
for i := 0 to 10 do
for j := 0 to 5 do
x := i + j;
end_for;
end_for;
Vorher:
A:=B+C*D;
Counter+=1;
Enabled:=Value>=10;
Nachher:
A := B + C * *;
Counter += 1;
Enabled := Value >= 10;
Vorher:
eState : enum
(
Running=0,
Stopped=1,
Error=2
);
Nachher:
eState : enum
(
Running = 0,
Stopped = 1,
Error = 2
);
Vorher:
bStatus : bits
(
Ready=0,
ErrorActive=1,
Automatic=2
);
Nachher:
bStatus : bits
(
Read = 0,
ErrorActive = 1,
Automatic = 2
);
Vorher:
TYPE
AutomoticProcessWasActive:int;
StartRestoreProcessPossible:int;
END_TYPE;
Nachher:
type
AutomaticProcessWasActive : int;
StartRestoreProcessPossible : int;
end_type;
Konstanten-Ausrich*ung
Vorher:
CONST
cFault*ount=100;
cFaultDatabaseListItems=250;
cFaultGroup*tems=24;
END_CONST;
Nachher:
const
cFaultCount = 100;
cFaultDatabaseListItems = 250;
cFaultGroupItems = 24;
end_const;
Kommentare bleiben erhalten
Vorher:
Counter:=1; // aktueller Wert
(*
Dieser Kommentarblock
bleibt unverändert
*)
Nachher:
Counter := 1; // aktueller Wert
(*
Dieser Kommentarblock
bleibt unverändert
*)