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.

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


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


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”.


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


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


-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ć

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.