このメソッドのこの引数は自動的にHTMLやSQLとして認識させたいなーって思うことがあったりしますよね。 それを、自作のプラグインで自動的に設定してあげる手順的なやつです。
プラグインの設定手順
plugin.xmlの定義
org.intellij.intelliLang
の拡張ポイントを使って、Language Injections
の設定ファイルを認識させます。
plugin.xml
の内容的にはこんな感じになります。
この設定の場合は、プロジェクトのmain/resources/META-INF/domaInjection.xml
(plugin.xmlと同じ場所)がLanguage Injections
の設定ファイルとしてロードされます。 1
<extensions defaultExtensionNs="org.intellij.intelliLang"> <injectionConfig config="META-INF/domaInjection.xml" /> </extensions>
Language Injectionsの設定ファイルを作る
Language Injections
の設定ファイルを作って、plugin.xml
のinjectionConfig
に設定したパスに保存してあげます。
設定ファイルの内容的には、こんな感じですね。<component name="LanguageInjectionConfiguration">
内にinjection
の設定をしてあげます。
<?xml version="1.0" encoding="UTF-8"?> <component name="LanguageInjectionConfiguration"> <injection language="SQL" injector-id="java"> <display-name>Sql.value (org.seasar.doma.experimental)</display-name> <place><![CDATA[psiMethod().withName("value").withParameters().definedInClass("org.seasar.doma.experimental.Sql")]]></place> </injection> <injection language="SQL" injector-id="kotlin"> <display-name>Sql.value (org.seasar.doma.experimental)</display-name> <place><![CDATA[psiMethod().withName("value").withParameters().definedInClass("org.seasar.doma.experimental.Sql")]]></place> </injection> </component>
この設定ファイル、手で作るのはかなりしんどいのでIntelliJの画面で作ったxmlから設定内容を持ってくるのが楽で良いですね。 IntelliJの設定画面からは、↓な流れで設定できますね。
設定内容は、~/.IntelliJIdea2019.3/config/options/IntelliLang.xml
(2020.1以降は、~/.config/JetBrains/IntelliJIdea2020.1/options/IntelliLang.xml
)に保存されているので、そこから必要なinjection
タグを探して持ってくれば良いですね。
動かしてみると
↓のようにLanguage Injections
の設定画面でプラグインで設定したやつが、Built-in
スコープで登録されていれば成功ですね。