Недавно у меня возникла идея плагина IntelliJ, который помогает мне в разработке программного обеспечения. Это для Scala, поэтому я хотел написать его на Scala. К счастью, JetBrains предоставляет плагин sbt для разработки плагинов Intellij. Я сразу попробовал.
Как упоминалось в README, существует репозиторий шаблонов для проекта плагина Intellij с этим плагином sbt.
Вы можете создать свой проект из этого репозитория шаблонов. Клонируйте и откройте его на IntelliJ.
Этот проект содержит несколько примеров. Запустите следующую команду, чтобы сначала увидеть, как она работает:
$ sbt runIDE
Эта команда запускает новый подключаемый модуль IntelliJ с образцом подключаемого модуля следующим образом:
Этот пример подключаемого модуля добавляет «Плагин Action Basics: всплывающее диалоговое действие» в меню «Инструменты». Следующее диалоговое окно отображается, если щелкнуть пункт меню.
Чтобы сгенерировать архив дистрибутива плагина, вы можете запустить следующую команду:
$ sbt packageArtifactZip
Эта команда создает MyAwsomeFramework-0.0.1-SNAPSHOT.zip
в каталоге target
. Вы можете установить этот файл, выбрав «Установить плагин с диска» в диспетчере плагинов.
У sbt-idea-plugin есть много других задач, которые помогают в разработке плагинов IntelliJ, таких как публикация плагина в репозитории плагинов JetBrains.
Далее рассмотрим структуру проекта. В проекте plugin.xml
в src/main/resources/META-INF
. Вы можете удалить расширения в этом файле и реализовать объявленные классы.
<idea-plugin> <id>me.and.co.my.awesome.framework</id> <name>My Awesome Framework</name> <version>0.0.1-SNAPSHOT</version> <vendor>Me and Co</vendor> <description>A new plugin for IntelliJ platform written in Scala and built with SBT</description> <idea-version since-build="203.0"/> <depends>com.intellij.modules.platform</depends> <depends>com.intellij.properties</depends> <resource-bundle>messages.SamplePluginBundle</resource-bundle> <actions> <action id="org.jetbrains.scala.samples.actions.PopupDialogAction" class="org.jetbrains.scala.samples.actions.PopupDialogAction"> <add-to-group group-id="ToolsMenu" anchor="first"/> </action> </actions> <applicationListeners> <listener class="org.jetbrains.scala.samples.listeners.FileOpenedListener" topic="com.intellij.openapi.fileEditor.FileEditorManagerListener"/> </applicationListeners> <extensions defaultExtensionNs="com.intellij"> <notificationGroup displayType="BALLOON" id="My Plugin Notification" /> <toolWindow factoryClass="org.jetbrains.scala.samples.ui.MyToolWindowFactory" id="MyToolWindow" anchor="bottom"/> <completion.contributor implementationClass="org.jetbrains.scala.samples.completion.SimpleCompletionContributor" language="Properties"/> </extensions> </idea-plugin>
Существует несколько ресурсов, посвященных разработке плагинов Intellij в Scala. Вы можете посмотреть исходный код плагина Scala для IntelliJ.
Кроме того, проект ZIO разрабатывает плагин для Intellij. Это может быть еще одним хорошим ресурсом для вас.