119 votes

Envelopper les appels de méthodes enchaînés sur une ligne distincte dans Eclipse pour Java

Je n'ai pas réussi à comprendre comment envelopper chaque appel de méthode dans Eclipse . Par exemple, j'ai ceci :

someObject.A().B().C();

Mais je le veux vraiment :

someObject.A()
          .B()
          .C();

Rien sous la section "Line Wrapping" dans le document Eclipse semble me donner ce résultat.

202voto

Christian García Points 689

En complément de la réponse de Deepak Azad, ce dont vous avez exactement besoin est le suivant :

Windows : Style du code Java dans les préférences de la fenêtre
Formateur Édition Habillage de ligne (onglet)

Mac OS : Préférences ADT Style de code Java
Formateur Édition Habillage de ligne (onglet)

Ensuite, dans la liste à gauche, sélectionnez :

Appels de fonction Invocations qualifiées

Maintenant, sous cette liste, mettez Politique d'enveloppement des lignes à :

Enveloppe tous les éléments, sauf le premier élément si ce n'est pas nécessaire.

Vérifiez :

Force le fractionnement, même si la ligne est plus courte que la largeur maximale de la ligne.

Enfin, définissez Politique d'indentation à (merci @Turbo ) :

Indentation sur la colonne

Il devrait vous donner le comportement exact que vous avez demandé.


BONUS : Android Studio / IntelliJ Idea :

Mac OS : Préférences d'Android Studio ( Cmd +, ) Éditeur Style de code Java Enveloppe et bretelles onglet Appels de méthodes en chaîne

sélectionnez

Toujours emballer

et vérifier

Alignement en cas de multiligne

2 votes

Merci. Cela ne fonctionne pas pour return new SomeClass().A().B().C(); avec chaque appel de méthode sur une ligne séparée.

3 votes

@ChristianGarcía +1 pour cette excellente réponse. Une observation de ma part (Eclipse neon) : Lorsque je règle Indent on column il ajoute parfois un espace supplémentaire, par exemple session.createQuery devient session .createQuery et ainsi de suite. Le retour à l'option par défaut a réglé le problème pour moi.

0 votes

Cela insère une tabulation après la première invocation. Pour l'éviter, j'ai dû cocher "Utiliser les espaces pour indenter les lignes enveloppées" sous Indentation.

13voto

Op De Cirkel Points 8632

Fenêtre → Préférences → Java → Style de code → Formateur → Édition → Habillage des lignes → Ne jamais joindre les lignes déjà habillées.

3 votes

Je suis désolé, je n'ai pas expliqué : Il ne le formatera pas. Il ne l'abîmera simplement pas, si vous le faites manuellement.

0 votes

Je comprends maintenant. Eclipse ne peut pas réellement formater les méthodes chaînées mais il conservera le formatage tel que je l'ai tapé. Merci.

0 votes

Rien de spécifique aux appels chaînés. Si vous forcez l'enveloppement des appels de fonction, ils seront enveloppés partout.

8voto

Deepak Azad Points 4547

Fenêtre > Préférences > Java > Style de code > Formateur > Édition > Habillage de ligne > Appels de fonction, définissez la "Politique d'habillage de ligne" comme "Habillage de tous les éléments, chaque élément sur une nouvelle ligne".

0 votes

Cela mettra sur une nouvelle ligne chaque appel de fonction, même s'ils ne sont pas enchaînés, et si vous formatez votre fichier avec Ctrl+Shift+f, cela perturbera tout

2 votes

D'autres politiques sont également disponibles, par exemple "Envelopper tous les éléments, sauf le premier élément si ce n'est pas nécessaire". L'une d'entre elles devrait vous convenir :)

7voto

Andy Guibert Points 14403

Pour ceux dont les paramètres de formatage du code d'Eclipse sont vérifiés dans le contrôle de la source (pour un formatage cohérent du code dans toute l'équipe), l'option .settings Le dossier est enregistré.

La propriété qui vous donnera ce comportement de mise en forme se trouve dans le fichier .settings/org.eclipse.jdt.core.prefs fichier.

La propriété est :

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80

3voto

Stim Points 466

Si vous êtes prêt à faire le formatage de ces segments vous-même, vous pouvez empêcher eclipse de reformater ces segments en utilisant :

// @formatter:off
...
// @formatter:on

Vous devrez peut-être l'activer dans vos préférences : http://archive.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html#JavaFormatter

Voir aussi : Comment désactiver le formateur de code d'Eclipse pour certaines sections du code Java ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X