2012-03-26 10 views
26

Jeśli na przykład wpisz "Integer". a następnie naciśnij CTRL + SPACE, a teraz wybierz "valueOf" z listy, Eclipse zawsze dodaje "()" po nazwie funkcji. To mnie denerwuje, ponieważ często mam już istniejące oświadczenie i chcę owijać wokół niego funkcję.Jak zatrzymać Eclipse przed automatycznym dodawaniem nawiasów?

Przykład: Chcę zmienić

String x = "hello world"; 

do

String x = StringManipulator.uppercase("hello world"); 

Jeśli piszę

String x = StringManipulator."hello world"; 

i naciśnij ctrl + spacja o charakterze punktowym, to wstawia

String x = StringManipulator.uppercase()"hello world"; 

Czy istnieje sposób naprawienia tego zachowania? Nie potrzebuję automatycznego zamykania nawiasów, ale zatrzymanie Eclipse od automatycznego dodawania ich pomoże mi bardzo.

+3

Jak to pytanie może zawierać mniej niż 100 przegranych? – mafu

Odpowiedz

9

Przejdź do Preferencje w eclipse -> do pola wyszukiwania wpisz: "parent" -> odznacz opcje, które Ci się nie podobają. Właśnie tego szuka się w tym bałaganie (preferencje z zaćmienia).

+1

Dzięki! Po wyszukaniu rodzica znalazłem go w Edytorze-> Wpisywanie. Edycja: Nie pomogło :-(Usunąłem zaznaczenie "Automatycznie zamknij ..." (nawiasy) ... "ale nadal je tworzy –

+0

Spróbuj ponownie uruchomić zaćmienie i upewnij się, że odznaczono je w prawej sekcji (Java, C/C++ itd.) Powinien działać, chyba że niektóre z twoich wtyczek się z tym zepsuły – AoeAoe

4

Automatyczne zamykanie nawiasów służy do otwierania nawiasów, w tym przypadku autouzupełniania metody, w tym przypadku, gdy wywoływana metoda ma argumenty, będzie ona automatycznie tworzyć nawiasy i bloki, w których będą umieszczane argumenty, ma sposobu, aby tylko uzupełni metodę bez nawiasów, ale można utworzyć szablon do autouzupełniania:

  1. otwórz Preferencje: Java => Edytor => szablon
  2. New
  3. Wpisz dowolną odpowiednią nazwę
  4. W kontekście wybierz instrukcje Java
  5. Wewnętrzny wzór zapisu: StringManipulator.uppercase ($ {line_selection} $ {cursor});
  6. OK i ponownie OK
  7. Teraz, gdy chcemy dodać funkcję wystarczy zaznaczyć tekst, który otaczają, wciśnij Alt + Shift + Z i wybrać wcześniej utworzony

szablon Nadzieja pomaga

+3

Dzięki! Zapewnia, że ​​to istnieje, ale jest zbyt skomplikowane, aby zrobić dla wszystkich metod API Javy :-) –

+0

Uważam, że jest to poprawna odpowiedź. Wydaje się, że nie można powiedzieć, że Eclipse nie tworzy '();' podczas autouzupełniania metody, chyba, że ​​@ pescamillam wspomniał, że robisz to dla każdej metody, to jest bummer, – KevinO

8

Uważam, że to niezwiązane z pozorem ustawienie ma duże znaczenie, więc o tym wspomnę.

Funkcja automatycznego uzupełniania w środowisku Eclipse działa nieco inaczej, jeśli wybierzesz opcję "Overput" zamiast "Insert Complement" w preferencjach "Content Assist".

wrappingMoriginalMethod()

kursorem po "GM" powyżej przyjmując wniosek o zakończeniu otrzymujemy:

wrappingMethod()

wrappingM (originalMethod()

kursorem po "GM" powyżej akceptując propozycję ukończenia, podaje się:

zawijanieMethod (originalMethod()

Uwaga Musiałem dodać otwarte okienko, aby zapobiec nadpisaniu, ale bez dodatkowych parens.

wrappingM originalMethod()

kursorem po "GM" powyżej przyjmując propozycję zakończenia daje:

wrappingMethod (parameterGuess) originalMethod()

Uważam to najbardziej wygodny wybór tej pory. Sądzę, że byłoby miło, gdyby istniała "inteligentna" funkcja wstawiania nawiasów, która NIE wstawiłaby paren, jeśli ukończyłaby się tuż przed istniejącym parenem, a ponieważ JESTEM W PRZYGOTOWANIU ... byłoby jeszcze bardziej niesamowicie, gdyby to mogło sprawdzić te istniejące pareny, aby sprawdzić, czy mają argumenty, których szukam, czy nie, i zrobić coś mądrego LUB sprawdzić metodę po moim miejscu wstawienia, aby zobaczyć, czy powinien to być argument do mojego ukończenia, i po prostu idź do przodu i ZRÓB to i umieść colsing paren po nim i PRZED półkolonem, jeśli już taki był.

Ponownie, jeśli IDE napisze WSZYSTKO z mojego kodu, szybko się znudzę.

+0

Niezły! Zgadzam się - to dziwne, że przy zrozumieniu, że Eclipse ma mój kod źródłowy, nie działa, że ​​jest już "()" obecny: / – cs94njw

Powiązane problemy