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.