Как остановить Eclipse от автоматического добавления круглых скобок?

Если я, например, наберу «Целое число». а затем нажмите CTRL+SPACE, а затем выберите «valueOf» из списка, Eclipse всегда добавляет «()» после имени функции. Меня это очень раздражает, потому что часто у меня есть уже существующий оператор, и я хочу обернуть вокруг него функцию.

Пример: я хочу изменить

String x = "hello world";

to

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

если я напишу

String x = StringManipulator."hello world";

и нажмите CTRL+SPACE на символе точки, он вставит

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

Есть ли способ исправить это поведение? Мне не нужно автоматическое закрытие круглых скобок, но просто остановить Eclipse от их автоматической вставки мне бы очень помогло.


person Konrad Höffner    schedule 26.03.2012    source источник
comment
Как этот вопрос может иметь менее 100 голосов?   -  person mafu    schedule 03.06.2015


Ответы (3)


Перейдите в Настройки в eclipse -> в поле поиска введите: "parent" -> снимите флажки с параметров, которые вам не нравятся. Вот что нужно искать в этом беспорядке (настройки затмения).

person Tomas Pruzina    schedule 26.03.2012
comment
Спасибо! При поиске родителя я нашел его в Editor-›Typing. Изменить: не помогло :-( Я снял флажок Автоматически закрывать... (круглые скобки)... но он все равно их создает. - person Konrad Höffner; 26.03.2012
comment
Попробуйте перезапустить eclipse и убедитесь, что вы сняли флажок в нужном разделе (Java, C/C++ и т. д.). Это должно работать, если некоторые из ваших плагинов не возятся с ним. - person Tomas Pruzina; 26.03.2012
comment
Возможно, вам придется включить это (применить), а затем отключить это (применить), чтобы оно вступило в силу! - person Michael Goldshteyn; 30.05.2019

Я считаю, что эта кажущаяся несвязанной настройка имеет большое значение, поэтому я упомяну ее.

Функция автозавершения в eclipse работает несколько иначе, если вы выбираете «Завершение перезаписывает» вместо «Завершение вставки» в настройках «Помощь по содержимому».

(Пусть wrappingMethod() будет методом, который будет завершен.)

wrappingMoriginalMethod()
При наведении курсора после "gM" выше принятие предложения о завершении дает:
wrappingMethod()

wrappingM(originalMethod()
С курсором после "gM" выше, принятие предложения завершения дает:
wrappingMethod(originalMethod()
Уведомление Мне пришлось добавить открывающую скобку, чтобы предотвратить перезапись, но никаких дополнительных скобок.

wrappingM originalMethod()
При наведении курсора после "gM" выше принятие предложения о завершении дает:
wrappingMethod(parameterGuess) originalMethod()

Я считаю, что это самый удобный выбор на данный момент. Я ДЕЙСТВИТЕЛЬНО думаю, что было бы неплохо, если бы была «умная» функция вставки круглых скобок, которая НЕ вставляла бы круглые скобки, если заполнялась прямо перед существующей скобкой, и, поскольку я все равно ЖЕЛАЮ... было бы еще круче, если бы она могла проверять эти существующие скобки, чтобы увидеть, есть ли у них аргументы, которые я ищу, или нет, и сделать что-то умное ИЛИ проверить метод после моей точки вставки, чтобы увидеть, должен ли он быть аргументом для моего завершения, и просто продолжайте, СДЕЛАЙТЕ это и поместите закрытие paren после него и ПЕРЕД точкой с запятой, если она там уже была.

Опять же, если IDE напишет ВЕСЬ мой код, мне довольно быстро надоест.

person Jason Kell    schedule 19.02.2013
comment
Хороший! И согласился - странно, что с пониманием того, что у Eclipse есть мой исходный код, не получается, что там уже () присутствует :/ - person cs94njw; 18.12.2017

Автоматически закрывать круглые скобки, когда вы открываете круглые скобки, в этом случае вы автоматически завершаете метод, в этом случае, когда вызываемый вами метод имеет аргументы, он автоматически создает круглые скобки и блоки, в которые будут помещены аргументы, нет способа просто автозаполните метод без круглых скобок, но вы можете создать шаблон для автозаполнения:

  1. Перейдите в «Настройки»: «Java» => «Редактор» => «Шаблон».
  2. Новый
  3. Напишите любое подходящее имя
  4. В контексте выберите операторы Java
  5. Внутри шаблона напишите: StringManipulator.uppercase(${line_selection}${cursor});
  6. Ок и еще раз Ок
  7. Теперь, когда вы хотите добавить функцию, просто выберите текст для окружения, нажмите alt + shift + z и выберите ранее созданный шаблон.

Надеюсь, поможет

person pescamillam    schedule 26.03.2012
comment
Спасибо! Обнадеживает то, что это существует, но слишком сложно для всех методов API Java :-) - person Konrad Höffner; 27.03.2012
comment
Я считаю, что это правильный ответ. Кажется, нет никакого способа сказать Eclipse, чтобы он не создавал (); при автозавершении метода. Если, как @pescamillam, не упомянул, что вы делаете это для каждого метода. Это облом. - person KevinO; 14.02.2016