Comment empêcher le formateur Eclipse de placer toutes les énumérations sur une seule ligne

106

J'ai des énumérations comme:

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

Lors du formatage du fichier, la sortie devient:

public static enum Command 
{
login, register, logout, newMessage
}
MétaChrome
la source
1
Existe-t-il une variable dans le formateur externe (org.eclipse.jdt.core.formatter ......) pour appliquer chaque variable enum dans une ligne distincte?
Paramesh Korrakuti

Réponses:

198

La réponse de @wjans fonctionnait bien pour les énumérations normales, mais pas pour les énumérations avec des arguments. Pour développer un peu sa réponse, voici les paramètres qui m'ont fourni le formatage le plus sensible dans Eclipse Juno:

  1. Window> Preferences> Java> Code Style>Formatter
  2. Cliquez sur Edit
  3. Sélectionnez l' Line Wrappingonglet
  4. Sélectionnez le enumtreenode de déclaration
  5. Réglez Line wrapping policysur Wrap all elements, every element on a new line (...)ainsi il indique maintenant 3 sur 3 entre parenthèses.
  6. Décochez-la Force split, even if line shorter than maximum line width (...)pour indiquer maintenant 3 sur 3 entre parenthèses.
  7. Sélectionnez le Constantstreenode
  8. Vérifier Force split, even if line shorter than maximum line width

Cela définit les 3 sous-nœuds pour le treenode d'énumération sur la même politique d'encapsulation, et la même politique de partage de force à l'exception du Constantstreenode, de sorte que vos énumérations avec des arguments seront formatées chacune sur leur propre ligne. Les arguments ne seront enveloppés que s'ils dépassent la largeur de ligne maximale.

Exemples:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

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

Solution décrite ci-dessus:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}
PolyTekPatrick
la source
1
Cela me semble toujours faux dans le visualiseur d'éclipse, mais quand je l'ai essayé sur la source réelle, cela a fonctionné comme un charme. Merci.
Ben Thurley
50

Vous pouvez le spécifier dans vos préférences de formateur:

  • Préférences: Java - Style de code - Formateur
  • Cliquez sur Modifier
  • Sélectionnez l'onglet 'Line Wrapping'
  • Sélectionnez la déclaration 'enum' -> Constantes dans la case de gauche
  • Définissez la stratégie de retour à la ligne sur "Envelopper tous les éléments, chaque élément sur une nouvelle ligne"
  • Cochez 'Forcer le fractionnement ...'
wjans
la source
J'ai eu ce problème pendant des mois. La chose que je n'ai pas essayée était la "séparation de force". Je ne sais pas pourquoi cela devrait être nécessaire, car vous penseriez que "envelopper tous les éléments" engloberait tous les éléments! Merci pour la solution.
LegendLength
11

C'est un peu moche aussi, mais si la politique de votre entreprise vous empêche de changer le formateur, vous pouvez simplement mettre des commentaires à la fin des lignes que vous ne voulez pas encapsuler.

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

Ce n'est pas sympa mais vous pouvez désactiver le formateur Eclipse pour certaines sections de code ...

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

l'option se trouve dans le panneau Windows-> Préférences-> Java-> Style de code-> Formatter-> Edit-> Off / On Tags

Pillingworth
la source
1
Cela fonctionne ... en quelque sorte. Le compilateur pense maintenant que c'est une erreur. Les mettre en commentaires permet de résoudre ce problème comme // @formatter: off
Bob Kuhar
4

Vous devez définir la stratégie de retour à la ligne sous la déclaration d'énumération pour «Constantes».

Définissez la stratégie d'emballage sur

  • Enveloppez tous les éléments, chaque élément sur une nouvelle ligne

ET

  • Cochez la case "Forcer le fractionnement, même si la ligne est plus courte que ,,,,,
Ray Toal
la source
0

Ajout de la dernière Eclipse 2018.9

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. Développez le Line Wrappingnœud de l'arborescence.
  3. Développer Wrapping settings
  4. Développer 'enum' declaration
  5. Modifier Constantset Constant arguments.

Les constantes doivent l'être Wrap all elements, every element on a new line. Des arguments constants doivent l'être Wrap where necessary.

Ondrej Burkert
la source