LINUX.ORG.RU

Как в IDE для Java реализуется completion для слова import?

 , ,


0

2

Допустим, IDE должна показать пользователю все имена пакетов, в «путь» которых входит подстрока foo. Возможно ли это эффективно реализовать? По идее, модули находятся в директориях, директорий много, они на диске, файлы в них могут меняться. Опрашивать все директории на каждое нажатие клавиши или поставить слушателя на каждую из директорий, чтобы оперативно отлавливать изменения?

Или просто нет такой команды и надо всегда начинать слева, с начала имени модуля?

Или это реализовано неэффективно, а пользователи это терпят?

Или изменения на диске остаются незамеченными, пока не дашь среде особого пинка?

★★★★★
Ответ на: комментарий от vertexua

А в PyCharm-е все равно удобнее.

Общий случай нафиг не нужен; в пределах одной функции Idea отлично дополняет, а между функциями типы шарятся из комментов, аналогов JavaDoc-а. Правда, последнее не так круто проработано, как в PHPStorm, но вполне сносно.

Фирменный идейный дебаг, фирменная идейная подсветка и реформат кода.

Поддержка virtualenv из коробки.

Встроенная консоль с поддержкой цветов и копипаста по Ctrl+C, Ctrl+V.

Запуск юниттестов.

SQL.

Вот только памяти нужно очень солидно, чтобы все зависимости проиндексировать. А в остальном — убервещь.

anonymous
()
Ответ на: комментарий от den73

Судя по тому, что при перезапуске IDEA начинает долго и упорно перестраивать индексы, то не сохраняет.

mono ★★★★★
()
Ответ на: комментарий от mono

а вот и нет. Индекс перестраивает в случае критических изменений, типа библиотеку новую добавили или jdk переключили. В обычно режиме никаких реиндексов.

ii8_ ★★★★
()
Ответ на: комментарий от Deleted

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

ii8_ ★★★★
()
Ответ на: комментарий от ii8_

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

Deleted
()
Ответ на: комментарий от ii8_

я хз где это в idea, но в номарльных ide рескан индексов репозитория можно настроить например каждую неделю или при запуске

Deleted
()
Ответ на: комментарий от anonymous

Еще не очень афишируемая фишка — если программа остановлена дебагом, то можно поправить код без перезапуска.

Угу, вот ради этой фишки без таких ограничений я и пилю свой ЯП. Фишка эта уже есть, а вот работа с библиотеками пока не до конца продумана. Посему и тема.

den73 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Бекендщику не знать фронтенд, это вроде как сюрвайвалисту уметь убить ножом крокодила, но считать что приготовить его - бабское дело

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

ну яж сказал, что писать могу и писал, только по возможности не лезу туда когда есть возможность не лезть

Deleted
()
Ответ на: комментарий от loz

Т.е. apropos-package-name . Ты ей говоришь util, а она тебе в ответ - com.sun.mail.util, java.util и все прочие пакеты по твоим путям, где есть слово util.

Если не apropos, то хотя бы complete.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Автодополнение есть, но оно какое-то хитрое, по _первым_ четырем буквам только работает, то есть не как у тебя в примере. Засчет этого и скорость, наверное.

loz ★★★★★
()
Ответ на: комментарий от loz

Автодополнение и должно быть быстрее апропоса. Т.е., я так понял, скорость устраивает?

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Смотри, я сгенерировал файлик с 3000 пустых классов, сохранил его, тут же в соседнем файле проекта начал писать «from test import MyClass» и он мне мгновенно выдал все 3000 вариантов. Если есть идеи как еще это потестить - попробую)

loz ★★★★★
()
Ответ на: комментарий от loz

Если есть идеи как еще это потестить - попробую)

Ну мне уж стыдно так внаглую паразитировать. Я думаю, что реальные тормоза начнутся, когда есть множество файлов, раскиданных по разным директориям, и все их нужно обыскать, чтобы собрать список доступного.

Ну и естественно опустошённый дисковый кеш.

В общем-то быстрый апропос необязательно нужен. Я же иногда делаю поиск имени по файлам в директориях и готов ждать, пока он пройдёт. Можно считать апропос разновидностью поиска по директориям.

В моём языке имена всех известных библиотеки будут расположены очень компактно, так что продолжение имени библиотеки даже с диска будет нормально работать без кеширования. А когда библиотека определена - тем более.

Другое дело, что стоит повременить с введением конструкции, позволяющей обращаться к модулям напрямую, минуя имя библиотеки. Для автодополнения в таком случае нужно будет каждый раз парсить описания всех библиотек, или отслеживать изменения в них и кешировать, а это всё может быть долго/прожороливо. Так что эту фичу пока не буду включать.

Но на будущее буду знать, как это делается в Яве. Всем спасибо!

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.