Короткий обзор возможностей:
Плагин позволяет сделать строчки чем-то большим, чем просто строковый литерал.
Например, строка может быть:
- Названием файла
- Названием свойства класса
- Названием метода
- Еще что-то?
Плагин имеет некую систему базового референса, от которого можно делать вычисления:
- Проект
- Директория
- Текущий файл
- Переменная ($var->…)
- Аргумент (method($var, …))
Описывая эти вещи самому можно сделать довольно сложные вычисления простым декларативным языком:
Подсказки для Yii2 метода
render():
<files
className="\yii\base\Controller"
methodName="render"
argumentIndex="0"
fileExt="php"
relatedTo="file"
>
<directoryProcessors>
<regexp from="Controller\.php" to=""/>
<regexp from="([a-z])([A-Z])" to="$1-$2"/>
<regexp from="/controllers/" to="/views/"/>
<regexp from="/modules/([^\\/]+)/views/" to="/themes/default/modules/$1/views/"/>
</directoryProcessors>
</files>
Подсказка метода
render() в файле представления:
<files
className="\yii\base\View"
methodName="render"
argumentIndex="0"
fileExt="php"
relatedTo="directory"
/>
Подсказка мейлера:
<files
className="\yii\swiftmailer\Mailer"
methodName="compose"
argumentIndex="0"
fileExt="php"
relatedTo="project"
>
<directoryProcessors>
<append value="common/mail/" />
</directoryProcessors>
</files>
Подсказка
Active Form:
<properties
className="\yii\widgets\ActiveForm"
methodName="field"
argumentIndex="1"
relatedTo="argument"
relatedArgumentIndex="0"
/>
Плагин позволяет комбинировать множество файлов конфигурации.
Можно предоставлять конфиги через библиотеки, чтобы конечные пользователи уже имели у себя весь набор подсказок.
Не делаем плагины под технологию, делаем конфиги к одному плагину.
——
Статья: https://habr.com/ru/articles/868898
Публичный репозиторий: https://github.com/xepozz/meta-storm-idea-plugin
Плагин на маркетплейсе: https://plugins.jetbrains.com/plugin/26121-meta-storm
@handle_topic