Статьи

Разработка плагина для IntelliJ IDEA — несколько полезных советов и ссылок

Когда я начал думать о написании своего первого плагина для IntelliJ IDEA, самой большой проблемой было отсутствие хороших и исчерпывающих руководств о том, как это сделать и как сделать это хорошо собранными в одном месте. Так что этот пост будет письменным собранием моего личного опыта, ссылок и других ресурсов, которые я нашел полезными и заслуживающими внимания на моем пути к выпуску плагина Share with Pastie для общедоступного репозитория IntelliJ .

связи

Перед тем, как начать писать свой умопомрачительный и супер-очень полезный плагин, вам следует сначала немного почитать. Ниже приведен список мест, которые стоит посетить:

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

Основы разработки плагинов — вторая страница похожа на предыдущую, но некоторые интересные знания можно найти там.

FAQ по разработке плагинов — лучшее место с готовыми решениями и ответами на ваши вопросы и проблемы

Открытый форум API — место, куда можно пойти, если вы действительно застряли со своей проблемой

Покажи мне код

Ресурсы в приведенных выше ссылках полезны, но рано или поздно вам придется погрузиться в код, чтобы проверить, как что-то работает или как вы можете реализовать какую-то функцию. Существует два способа анализа исходного кода самой IntelliJ IDEA:

откройте консоль и введите: git clone git: //git.jetbrains.org/idea/community.git idea

или проверьте исходный код IntelliJ IDEA 10 на GrepCode

Я использовал оба способа: Git-репозиторий для извлечения всего проекта, открытия его в IDEA и поиска использования и т. Д., И GrepCode для быстрого поиска того, как выглядит отдельный фрагмент кода.

Учиться у других

Иногда вы можете захотеть добавить какую-то функцию, которая очень похожа на ту, что вы видели в плагине, написанном кем-то другим. Если вам повезет, исходный код этого плагина доступен. Единственное, что вам нужно сделать, это посетить http://plugins.intellij.net/?idea , найти плагин с похожей функцией и проверить, доступен ли его исходный код в открытом доступе. Вот как я нашел способ добавить зеленый шарик с сообщением, что выбранный фрагмент кода был успешно предоставлен Pastie.

Несколько полезных примеров кода

Есть несколько элементов, которые, вероятно, существуют в исходном коде почти каждого плагина. Чтобы облегчить вам боль в поиске или поиске, вот несколько коротких примеров, которые я считаю наиболее популярными.

Получение текущего проекта, текущего файла и т. Д.

Ваше действие плагина должно расширить абстрактный класс AnAction из IntelliJ OpenAPI. Единственный параметр, переданный методу actionPerformed, — это AnActionEvent. И из этого объекта вы можете получить доступ к различным местам:

1
2
3
4
5
Project currentProject = DataKeys.PROJECT.getData(actionEvent.getDataContext());
VirtualFile currentFile = DataKeys.VIRTUAL_FILE.getData(actionEvent.getDataContext());
Editor editor = DataKeys.EDITOR.getData(actionEvent.getDataContext());
 
// and so on...

Список всех доступных мест можно найти в списке констант класса DataKeys (и его родителей).

Воздушный шар с информацией или сообщением об ошибке

Этот вид всплывающих окон очень полезен для передачи сообщений обратной связи пользователю. Это может быть информационное сообщение или ошибка / предупреждение. Цвета по умолчанию — зеленый для информации, красный для ошибок и оранжевый для предупреждений. В Share with Pastie я использую его, чтобы сообщить, что выбранный текст был успешно отправлен Pastie, и ссылка находится в буфере обмена.

Но прежде чем мы покажем наш воздушный шар, нам нужно указать место, где он будет расположен. В моем плагине это StatusBar (самый низкий элемент в графическом интерфейсе IDEA):

1
2
StatusBar statusBar = WindowManager.getInstance()
                        .getStatusBar(DataKeys.PROJECT.getData(actionEvent.getDataContext()));

и тогда мы можем подготовить воздушный шар и показать его:

1
2
3
4
5
6
JBPopupFactory.getInstance()
                .createHtmlTextBalloonBuilder(htmlText, messageType, null)
                .setFadeoutTime(7500)
                .createBalloon()
                .show(RelativePoint.getCenterOf(statusBar.getComponent()),
                                                 Balloon.Position.atRight);

Несколько мелочей

Плагин DevKit

Самое главное — это скачать или активировать плагин с именем Plugin DevKit, который позволит запускать и отлаживать свой плагин в процессе разработки. Это кажется очень тривиальным, но вы, возможно, деактивировали этот плагин (как я :) ) или убрал его, чтобы ускорить время запуска.

UI Designer

Если вы планируете разработать плагин с дополнительными окнами, всплывающими окнами и т. Д., Плагин с именем UI Designer очень удобен. Это что-то очень похожее на конструктор графического интерфейса от NetBeans и позволяет создавать панели Swing с помощью перетаскивания, изменения размера и размеров компонентов.

ID группы и действия

Когда я искал подходящее место для отображения своих действий в одном из меню, доступных в IntelliJ IDEA, я обнаружил страницу со списком групп и идентификаторов действий, которые могут помочь мне в настройке моего плагина. Но эта страница оказалась действительно устаревшей, поэтому я попытался найти другой способ определить правильные значения этих идентификаторов. И конечно, решение лежало прямо передо мной. Если в окне проекта нажать Alt + Insert, мы увидим меню, позволяющее создать несколько новых объектов. И одним из них является Action. Нажав на нее, мы увидим очень дружелюбного создателя действий, который будет выглядеть ниже. И, конечно же, он содержит список доступных групп и действий, чтобы разместить рядом с ними наш пункт меню плагинов.

Правильные настройки памяти ВМ

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

Чтобы избежать таких проблем, вы должны настроить параметры памяти в окне «Run / Debug Configurations» и добавить правильные параметры виртуальной машины. Для меня -Xms256m -XX: PermSize = 128m -XX: MaxPermSize = 512m работал хорошо.

Конец

Итак, это мой опыт, советы и мысли по созданию собственного плагина IntelliJ IDEA. Я надеюсь, что вы найдете это полезным, и ваш плагин позволит нам (разработчикам) быть еще более продуктивными и предоставлять код быстрее и с лучшим качеством. :) Мой друг сказал: «Если бы я знал, как создавать плагины для IDEA, я бы создавал новые каждые три недели, потому что у меня постоянно появляются новые идеи, как улучшить мой рабочий процесс», поэтому, возможно, после прочтения этого поста, по крайней мере, начнется процесс разработки плагинов. будет проще

Ссылка: Разработка плагина для IntelliJ IDEA — несколько полезных советов и ссылок от нашего партнера по JCG Томаша Дзюрко в блоге Code Hard Go Pro .