Только полная аббревиатура Eclipse Contentassist

Когда мне нравится создавать новую переменную типа ImageObserver, и строка начинается так:

IO

и я нажимаю Ctrl+Пробел , я получаю пару неправильных предложений! Предложения по аббревиатурам, которые не полностью совпадают!

Рекомендации Eclipse по работе с содержимым:

  • IOException (нет! полное сокращение — IOE, а не IO!)
  • IOError (нет! полное сокращение тоже IOE, но не IO!)
  • IndexOutOfBoundsException (нет! полное сокращение — IOOBE, а не IO!)
  • ImageObserver (да! Полная аббревиатура — IO)
  • ImageOutputStream (нет! полное сокращение — IOS, а не IO!)

Как избавиться от всех других неполных соответствий-аббревиатур?


person Grim    schedule 05.01.2016    source источник


Ответы (2)


Имейте в виду, что предложения по завершению делятся на множество категорий (т. е. множество различных источников потенциальных совпадений). Текст вашего примера, IO, можно логически интерпретировать как аббревиатуру в верблюжьем регистре (например, ImageObserver) или как начало имени класса (например, IOException) или даже как верблюжий регистр. -starts-with-match (например, ImageOutputStream, аббревиатура которого начинается с IO).

Я не знаю инструмента, достаточно ясновидящего, чтобы знать, какие из них вам нужны, учитывая такой небольшой вклад. Eclipse по умолчанию использует порядок «релевантности» для предложений завершения и взвешивает совпадения «начинается с» перед совпадениями с верблюжьим регистром (на мой взгляд, это правильно). Насколько я знаю, нет общедоступного способа изменить этот алгоритм взвешивания.

Если это классы или пакеты, которые вы просто никогда не хотите видеть в Content-Assist, вы можете определить фильтры типов, чтобы исключить их. Для этого в разделе Настройки выберите Java > Внешний вид > Фильтры типов. Но имейте в виду, что фильтры типов применяются ко всей рабочей области и в нескольких местах пользовательского интерфейса, а не только к предложениям завершения Content Assist.

person E-Riz    schedule 08.01.2016

Вы действительно хотите, чтобы IOException исключалось из автозаполнения при вводе IO, даже если IOException начинается с IO?

Если да, то это звучит как запрос функции, но если вы не готовы внести свой вклад, я не думаю, что она будет добавлена ​​в ближайшее время.

Содействие

Если вы заинтересованы в содействии, вам необходимо написать Компьютер предложения о завершении Java. Как только вы это сделаете, вы сможете включить в настройках (Java / Редактор / Помощник по содержанию / Дополнительно ).

Вы даже можете привязать свое специальное завершение к его собственному сочетанию клавиш, чтобы получать только «полные сокращения».

Вот скриншот моей привязки шаблонных предложений к Ctrl+4, поэтому с помощью одной комбинации клавиш я могу быстро получить их все.

введите здесь описание изображения

Рекомендатели кода

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

Я поднял ошибку с Eclipse, чтобы посмотреть, можно ли сортировать идеальные совпадения Camel Case.

person Jonah Graham    schedule 08.01.2016
comment
Я помню старую версию eclipse 2, у них была эта функция. Рекомендации по коду, на самом деле, управляются сообществом, класс недостаточно широко используется, чтобы ImageObserver разрешалось из IO по умолчанию. - person Grim; 09.01.2016
comment
... и да, я ожидаю, что ImageObserver разрешится из IO. И я ожидаю, что IOException будет предложено от IOE. Почему вопрос? - person Grim; 09.01.2016
comment
Потому что то, о чем вы просите, является значительным подмножеством того, что делает и может делать автозаполнение. - person Jonah Graham; 09.01.2016
comment
Что касается рекомендаций по коду, они добавляют гораздо больше, чем просто управляемые сообществом, они также управляются вами, а также добавляют другие более интеллектуальные дополнения (см. stackoverflow.com/a/34565115/2796832). Я очень впечатлен тем, что вы всегда помните точную аббревиатуру верблюжьего регистра для каждого класса, который вы когда-либо хотите использовать для автозаполнения, лично я не могу вспомнить, назывался ли класс XmlParser или XMLParser (хотя я бы хотел, чтобы у людей всегда был нижний регистр мл в Xml ) - person Jonah Graham; 09.01.2016
comment
Правила наименования классов за последние годы не изменились. Если аббревиатура используется чаще, чем полное имя, оно пишется в верхнем регистре, поэтому XMLParser естественно использует аббревиатуру XMLP. Серьезно? Я не знаю Абревов, но знаю классы, которые ищу. В примере исключение FileNotFoundException заставляет меня писать только FNFE, поэтому другие предложения должны появляться только в качестве запасного варианта. - person Grim; 09.01.2016