Encapsulation des appels de méthode chaînée sur une ligne distincte dans Eclipse pour Java

105

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

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

Mais je veux vraiment ceci:

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

Rien dans la section "Line Wrapping" ne Eclipsesemble me donner ce résultat.

Johann
la source

Réponses:

186

Pour compléter la réponse de Deepak Azad, vous avez exactement besoin de ce qui suit:

Windows : Fenêtre → Préférences → Java → Style de code
→ Formateur → Modifier → Retour à la ligne (onglet)

Mac OS : ADT → Préférences → Java → Style de code
→ Formateur → Modifier → Retour à la ligne (onglet)

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

Appels de fonction → Appels qualifiés

Maintenant, sous cette liste, définissez la stratégie de retour à la ligne sur:

Enveloppez tous les éléments, sauf le premier élément si cela n'est pas nécessaire

Vérifier :

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

Enfin, définissez la stratégie d'indentation sur (merci @Turbo ):

Indentation sur la colonne

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


BONUS: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Préférences ( Cmd +,) → Éditeur → Style de code → Java → Onglet Wrapping and Braces → Appels de méthode chaînés

sélectionner

Enveloppez toujours

et vérifie

Aligner lorsque multiligne

Christian García
la source
2
Merci. Cela ne fonctionne pas pour return new SomeClass().A().B().C();chaque appel de méthode sur une ligne distincte.
Harvey
1
@ ChristianGarcía +1 pour la bonne réponse. Une observation de ma part (néon Eclipse): lorsque je fixe Indent on column, cela ajoute parfois de l'espace supplémentaire; par exemple session.createQuerydevient session .createQueryet ainsi de suite. Le retour à l'option par défaut a résolu le problème pour moi.
Sayan Pal
Cela insère un onglet après la première invocation. Pour éviter cela, j'ai dû cocher "Utiliser des espaces pour mettre en retrait les lignes encapsulées" sous Indentation.
Daniel Nitzan le
12

Fenêtre → Préférences → Java → Style de code → Formater → Modifier → Retour à la ligne → Ne jamais joindre des lignes déjà enveloppées

Op De Cirkel
la source
3
Je suis désolé de ne pas avoir expliqué: il ne le formatera pas. Cela ne gâchera tout simplement pas, si vous le faites manuellement.
Op De Cirkel
Je comprend maintenant. Eclipse ne peut pas formater les méthodes chaînées mais il conservera le formatage tel que je l'ai tapé. Merci.
Johann
rien de spécifique aux appels chaînés. Si vous forcez le bouclage des appels de fonction, il s'enroulera partout
Op De Cirkel
@Johann Ce n'est pas correct, Eclipse peut formater des appels de méthode chaînés.
Deepak Azad
@OpDeCirkel Vous devriez ajouter votre commentaire dans la réponse elle-même. Faites en sorte qu'il soit plus facile pour les gens de le remarquer: Ce commentaireI am sorry i did not explain: It won't format it. It will simply not mess it up, if you do it manually. –
Sandeep Shukla
7

Fenêtre> Préférences> Java> Style de code> Formater> Edition> Retour à la ligne> Appels de fonction, définissez la «Politique de retour à la ligne» sur «Envelopper tous les éléments, chaque élément sur une nouvelle ligne».

Deepak Azad
la source
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
gâchera
1
D'autres politiques sont également disponibles, par exemple "Envelopper tous les éléments, sauf le premier élément si cela n'est pas nécessaire". L'un d'eux devrait fonctionner pour vous :)
Deepak Azad
7

Pour ceux dont les paramètres de mise en forme du code éclipse sont archivés dans le contrôle de code source (pour un formatage de code cohérent dans toute l'équipe), le .settingsdossier est archivé.

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

La propriété est:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
Andy Guibert
la source
0

dans: Window-> Preferences-> Java-> Code Style-> Formater-> Edit-> Line wrapping-> Function call-> Qualified invocation

sélectionnez la stratégie de retrait comme retrait sur la colonne

Shiv Krishna Jaiswal
la source
-1

Personnalisez votre formateur eclipse en java et javascript. augmentez la ligne maximale avec celle qui correspond à votre écran.Windows> préférences

Éditer

Jajikanth pydimarla
la source