Заблокировать пробел при запуске автозаполнения в Eclipse

В Eclipse Oxygen я включил предложения в стиле intellisense для Java, перейдя в

Window -> Preferences -> Java/Editor/Content Assist

и установив следующее

Auto activation delay (ms) -> 0
Auto activation triggers for Java -> .(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

источник = Eclipse Intellisense?

Это прекрасно работает, за исключением одной раздражающей проблемы. Когда я нажимаю spacebar, набираемый токен автоматически заполняется тем, что находится вверху списка предложений. Справедливо, за исключением того, что иногда я буду вводить имя класса/переменной с точным допустимым соответствием, но это не будет лучшим предложением. Поэтому, когда я естественно нажимаю spacebar, Eclipse вставляет что-то совершенно не так.

EG после ввода Cookie я ударю spacebar и получить CookieMonster.

Это похоже на ошибку и случается достаточно часто, чтобы раздражать, но даже несмотря на это, я не хочу, чтобы spacebar вообще запускал автозаполнение. Я могу хотеть напечатать имя переменной, которая еще не была объявлена, или что-то подобное. Я хочу использовать автозаполнение в качестве вспомогательного инструмента, но моя естественная типизация всегда должна иметь приоритет над ним.

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

Я поиграл со всеми настройками в Content Assist, но безрезультатно. Поиск в Google всего лишь возвращает кучу результатов об отключении функции автозаполнения.

ОБНОВИТЬ

Эта проблема присутствует в последних 6 версиях Eclipse - Oxygen [4.7] Neon [4.6] Mars [4.5] Luna [4.4] Kepler [4.3] и Juno [4.2]

Тема в системе отслеживания проблем, обсуждаемая в принятом ответе, и различные комментарии, кажется, предполагают, что эта проблема была признана.

Если какие-то разработчики Eclipse читают, все, что я могу сказать, - подумайте о преимуществах исправления.

Конечно, плагин в принятом ответе и другие плагины, связанные с веткой ошибок, исправьте это. Но сколько других людей, сталкивающихся с этой проблемой, либо знают о ней, либо потрудятся найти и установить ее?

Автозаполнение - это функция, с которой вы хотите работать интуитивно и безупречно в любой современной IDE. Так обстоит дело в IntelliJ IDEA, и в настоящее время это очень убедительная причина для перехода...

Ответ 2

Используйте SDK-версию eclipse

Плагины 1.open Просмотр и поиск org.eclipse.jface.text, щелкните правой кнопкой мыши, выберите импорт в качестве исходного проекта. После импорта вы найдете его в своем рабочем пространстве.

2.In src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java

char[] triggers = t.getTriggerCharacter();
if(contains(triggers,key))

измените на

if(key!='='&&key!=0x20&&contains(triggers,key))

3.Export org.eclipse.jface.text

Щелкните правой кнопкой мыши папку проекта org.eclipse.jface.text, выберите export → Развертываемые плагины и фрагменты, затем выберите пункт назначения архивного файла, завершите. Замените в Eclipse/plugins ту, которую вы создаете.

Ответ 3

Пробел был ключом для выбора автозаполнения даже в Indigo. Насколько мне известно, это невозможно настроить. На самом деле, вероятно, поэтому существует задержка.

Я предлагаю установить задержку на некоторое оптимальное значение, что позволяет удобно вводить такие вещи, как private void ..., не вызывая предложений для private и void. Затем, если вы получите предложение, потому что вы слишком долго ждали, нажмите Escape, чтобы прервать Content Assist.

Ответ 4

Такая же конфигурация, как davnicwil, та же проблема, все еще на eclipse 4.4.

Решение: перехват (перехват) SHIFT + SPACE (нажмите и удерживайте) в (заслонке редактора) затмение и замените его ESC, SPACE (последовательность). Теперь вы решаете между

  • Автозаполнение + ПРОСТРАНСТВО: нажмите пробел, когда присутствует автозаказ.
  • просто SPACE: нажмите предопределенную комбинацию клавиш или последовательность (например, SHIFT + SPACE)

В окнах вы можете использовать http://www.heise.de/download/activaid.html (вы также можете использовать AutoHotkey, java native hook,...)

HowTo с ActivAid:

  • Откройте Ac'tivAid, выберите "UserHotkeys"
  • нажмите "+", укажите описание
  • нажмите "короткая вырезка", нажмите, например. SHIFT + ПРОБЕЛ
  • Команда: "{ESC} {SPACE}" (без кавычек)
  • нажмите "+", выберите рамку редактора eclipse, нажмите клавишу ВВОД
  • нажмите "ОК", "ОК" в "Ac'tivAid"

Мой конфигурационный файл: activAid/settings/ac'tivAid.ini: [UserHotkeys]

Hotkey11=+Space
Path11=<Send>{ESC}{SPACE}
Description11=Eclipse Shift+Space -> Esc,Space
Category11=
Application11=ahk_class SWT_Window0

Вы также можете переназначить ключи на неанглийских клавиатурах с помощью "HotStrings", например. ö → {, ä- > } и т.д.

Ответ 5

Наконец, отработал.

Попробуйте загрузить org.eclipse.jface.text.jar и скопировать его в свою папку с плагином (как правило, eclipse/plugin). Не забудьте сделать резервную копию своей собственной.

Работает над Eclipse Juno.

Если ссылка не работает, прокомментируйте это, спасибо.

Ответ 6

Патч для Bug 348857 был недавно объединен с проектом Eclipse и был выпущен как часть Eclipse 2018-12. Вы можете скачать эту версию здесь.

Теперь у вас есть новая опция, чтобы отключить все триггеры вставки, кроме enter, что предотвратит spacebar от автозаполнения.

Просто перейдите в Настройки... → Java → Редактор → Помощник по содержимому (или Окно → Настройки → Java → Редактор → Помощник по содержимому в Windows) и выберите Отключить триггеры вставки, кроме "Enter", как показано на скриншот ниже: Disable insertion triggers preferences

Ответ 7

Вы можете отключить автоматическую активацию с помощью флажка в

Window -> Preferences -> Java/Editor/Content Assist

и активировать функцию автозаполнения по требованию. Горячей клавишей по умолчанию для этого является

CTRL + Space

Ответ 8

В Eclipse перейдите в Window → Preferences → General → Keys и удалите привязку для команды Content Assist.