So verhindern Sie, dass der Eclipse-Formatierer alle Aufzählungen in einer Zeile platziert

106

Ich habe Aufzählungen wie:

public static enum Command
{
login,
register,
logout,
newMessage
}

Beim Formatieren der Datei wird die Ausgabe wie folgt:

public static enum Command 
{
login, register, logout, newMessage
}
MetaChrome
quelle
1
Gibt es eine Variable im externen Formatierer (org.eclipse.jdt.core.formatter ......), um jede Aufzählungsvariable in einer separaten Zeile zu erzwingen?
Paramesh Korrakuti

Antworten:

198

Die Antwort von @wjans funktionierte gut für normale Aufzählungen, aber nicht für Aufzählungen mit Argumenten. Um seine Antwort ein wenig zu erweitern, hier die Einstellungen, die mir in Eclipse Juno die sinnvollste Formatierung ermöglichten:

  1. Window> Preferences> Java> Code Style>Formatter
  2. Klicken Edit
  3. Wählen Sie die Line WrappingRegisterkarte
  4. Wählen Sie den enumDeklarationstreenode aus
  5. Stellen Sie Line wrapping policyzu Wrap all elements, every element on a new line (...)so heißt es nun 3 von 3 in der Klammer.
  6. Deaktivieren Force split, even if line shorter than maximum line width (...)Sie das Kontrollkästchen , damit jetzt 3 von 3 in der Klammer steht.
  7. Wählen Sie den ConstantsTreenode
  8. Prüfen Force split, even if line shorter than maximum line width

Dadurch werden die 3 Unterknoten für den Enum-Treenode auf dieselbe Umbruchrichtlinie und dieselbe Force-Split-Richtlinie mit Ausnahme des ConstantsTreenode festgelegt, sodass Ihre Enums mit Argumenten jeweils in einer eigenen Zeile formatiert werden. Die Argumente werden nur umgebrochen, wenn sie die maximale Zeilenbreite überschreiten.

Beispiele:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(
        0,
        255,
        0),
    RED(
        255,
        0,
        0)
}

Die oben beschriebene Lösung:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}
PolyTekPatrick
quelle
1
Sieht im Eclipse Previewer für mich immer noch falsch aus, aber als ich es an der eigentlichen Quelle ausprobiert habe, hat es wie ein Zauber funktioniert. Vielen Dank.
Ben Thurley
50

Sie können dies in Ihren Formatierungseinstellungen angeben:

  • Einstellungen: Java - Codestil - Formatierer
  • Klicken Sie auf Bearbeiten
  • Wählen Sie die Registerkarte "Zeilenumbruch"
  • Wählen Sie im Feld links die Option 'enum' -> Konstanten
  • Setzen Sie die Zeilenumbruchrichtlinie auf "Alle Elemente umbrechen, jedes Element in einer neuen Zeile".
  • Aktivieren Sie "Force Split ...".
Wjans
quelle
Ich hatte dieses Problem seit Monaten. Das, was ich nicht ausprobiert habe, war "Force Split". Ich bin mir nicht sicher, warum es benötigt werden sollte, da Sie denken würden, dass "alle Elemente umschließen" tatsächlich alle Elemente umschließen würde! Danke für die Lösung.
LegendLength
11

Es ist auch etwas hässlich, aber wenn Ihre Unternehmensrichtlinie Sie daran hindert, den Formatierer zu ändern, können Sie einfach Kommentare an das Ende von Zeilen setzen, die nicht umbrochen werden sollen.

public static enum Command 
{
    login,//
    register,//
    logout,//
    newMessage//
};
Raku
quelle
5

Es ist nicht schön, aber Sie können den Eclipse-Formatierer für einige Codeabschnitte deaktivieren ...

// @formatter:off
public static enum Command {
    login,
    register,
    logout,
    newMessage
};
// @formatter:on

Die Option befindet sich im Bereich Windows-> Einstellungen-> Java-> Codestil-> Formatierer-> Bearbeiten-> Aus / Ein-Tags

Pillingworth
quelle
1
Das funktioniert ... irgendwie. Der Compiler hält es jetzt für einen Fehler. Das Einfügen in Kommentare überwindet dieses Problem wie // @formatter: off
Bob Kuhar
4

Sie müssen die Zeilenumbruchrichtlinie unter der Aufzählungsdeklaration für "Konstanten" festlegen.

Setzen Sie die Umbruchrichtlinie auf

  • Wickeln Sie alle Elemente, jedes Element in eine neue Zeile

UND

  • Aktivieren Sie das Kontrollkästchen "Force Split", auch wenn die Zeile kürzer als ,,,,, ist.
Ray Toal
quelle
0

Fügen Sie einfach die neueste Eclipse 2018.9 hinzu

  1. Window > Preferences > Java > Code Style > Formatter - - Edit
  2. Baumknoten erweitern Line Wrapping.
  3. Erweitern Wrapping settings
  4. Erweitern 'enum' declaration
  5. Bearbeiten Constantsund Constant arguments.

Konstanten müssen sein Wrap all elements, every element on a new line. Konstante Argumente müssen sein Wrap where necessary.

Ondrej Burkert
quelle