Zawijanie wywołań metod łańcuchowych w osobnym wierszu w Eclipse for Java

105

Nie udało mi się dowiedzieć, jak zawijać każde wywołanie metody Eclipse. Na przykład mam to:

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

Ale naprawdę tego chcę:

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

Nic w sekcji „Zawijanie linii” nie Eclipsewydaje mi się dawać takiego wyniku.

Johann
źródło

Odpowiedzi:

186

Uzupełniając odpowiedź Deepak Azad, dokładnie potrzebujesz:

Windows : Okno → Preferencje → Java → Styl kodu
→ Formatter → Edycja → Zawijanie linii (karta)

Mac OS : ADT → Preferencje → Java → Styl kodu
→ Formatter → Edycja → Zawijanie linii (karta)

Następnie na liście po lewej stronie wybierz:

Wywołania funkcji → Wywołania kwalifikowane

Poniżej tej listy ustaw zasady zawijania wierszy na:

Zawiń wszystkie elementy, z wyjątkiem pierwszego elementu, jeśli nie jest to konieczne

Sprawdź :

Wymuś podział, nawet jeśli linia jest krótsza niż maksymalna szerokość linii

Na koniec ustaw zasady dotyczące wcięć na (dzięki @Turbo ):

Wcięcie kolumny

Powinien dać ci dokładnie takie zachowanie, o jakie prosiłeś.


BONUS: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferencje ( Cmd +,) → Edytor → Styl kodu → Java → Zakładka Zawijanie i nawiasy klamrowe → Połączone wywołania metod

Wybierz

Zawsze zawijaj

i zaznacz

Wyrównaj, gdy jest wielowierszowy

Christian García
źródło
2
Dzięki. Nie działa to w return new SomeClass().A().B().C();przypadku każdego wywołania metody w osobnym wierszu.
Harvey
1
@ ChristianGarcía +1 za świetną odpowiedź. Jedna uwaga ode mnie (neon Eclipse): Kiedy ustawiam Indent on column, czasami dodaje to dodatkowej przestrzeni; na przykład session.createQuerystaje się session .createQueryi tak dalej. Jednak powrót do opcji domyślnej rozwiązał problem.
Sayan Pal
Spowoduje to wstawienie tabulatora po pierwszym wywołaniu. Aby tego uniknąć, musiałem zaznaczyć opcję „Użyj spacji do wcięcia zawiniętych wierszy” w sekcji Wcięcia.
Daniel Nitzan
12

Okno → Preferencje → Java → Styl kodu → Formater → Edycja → Zawijanie linii → Nigdy nie łącz już zawiniętych linii

Op De Cirkel
źródło
3
Przepraszam, że nie wyjaśniłem: to nie sformatuje. Po prostu nie zepsuje tego, jeśli zrobisz to ręcznie.
Op De Cirkel
Teraz rozumiem. Eclipse nie może faktycznie sformatować połączonych metod, ale zachowa formatowanie, tak jak je wpisałem. Dzięki.
Johann
nic specyficznego dla połączonych połączeń. Jeśli wymusisz zawijanie wywołań funkcji, zawinie się ono wszędzie
Op De Cirkel
@Johann To nie jest poprawne, Eclipse może formatować wywołania metod łańcuchowych.
Deepak Azad
@OpDeCirkel Należy dodać swój komentarz w samej odpowiedzi. Ułatw ludziom to zauważenie: ten komentarzI 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

Okno> Preferencje> Java> Styl kodu> Formater> Edycja> Zawijanie wierszy> Wywołania funkcji, ustaw „Zasady zawijania wierszy” jako „Zawijaj wszystkie elementy, każdy element w nowym wierszu”.

Deepak Azad
źródło
Spowoduje to umieszczenie w nowej linii każdego wywołania funkcji, nawet jeśli nie są one powiązane, a jeśli sformatujesz plik za pomocą Ctrl + Shift + f, wszystko
zepsuje
1
Dostępne są również inne polityki, np. „Zawijaj wszystkie elementy, z wyjątkiem pierwszego elementu, jeśli nie jest to konieczne”. Jeden z nich powinien działać dla Ciebie :)
Deepak Azad
7

W przypadku osób, które mają wpisane ustawienia formatowania kodu zaćmienia w kontroli źródła (w celu zapewnienia spójnego formatowania kodu w całym zespole), .settingsfolder jest wpisywany.

Właściwość, która zapewni takie zachowanie formatowania, znajduje się w .settings/org.eclipse.jdt.core.prefspliku.

Nieruchomość jest:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
Andy Guibert
źródło
0

w: Okno-> Preferencje-> Java-> Styl kodu-> Formater-> Edycja-> Zawijanie wierszy-> Wywołanie funkcji-> Wywołanie kwalifikowane

wybierz zasady wcięć jako wcięcia w kolumnie

Shiv Krishna Jaiswal
źródło
-1

Dostosuj swój program formatujący zaćmienie zarówno w języku java, jak i javascript. zwiększ maksymalną linię, dopasowując ją do ekranu.Windows> preferencje

Edytować

Jajikanth pydimarla
źródło