daisuzz.log

IntelliJのLanguage Injectionsを使ってみる

今回はIntelliJのLanguage Injectionsという機能を使ってみたいと思います。 IntelliJの細かい設定や操作の詳細は公式ドキュメントを参考してください。

Language injections - Help | IntelliJ IDEA

Language Injectionsとは

Language Injectionsとは、文字列の中でJSON,やSQLなどの言語を記述する際に、文法チェックや補完などをIDEがおこなってくれたり、文字列の中の言語をより書きやすくしてくれる機能です。

Language Injectionsを使わない場合

例えば文字列の中でJSONを記述しようとすると、以下のようにダブルクオーテションをエスケープしながら記述する必要があるのですが、これを手で書いていくのはなかなかつらいと思います。

f:id:dais39:20190508214540p:plain

また、以下のようにJSONの文法エラーとなるような記述をしても、文字列として扱われるためIDEはエラーと認識しません。

f:id:dais39:20190508215138p:plain

Language Injectionsを有効にするとこういった不便な問題を解決することができます。

Language Injectionsを使った場合

まず、空の文字列を記述して、カーソルを文字列に合わせた状態でalt + returnを押して、以下を表示させます。

f:id:dais39:20190508215349p:plain

Inject language or referenceをクリックして、JSONを選択します。

f:id:dais39:20190508215630p:plain

もう一度文字列にカーソルを合わせてalt + returnを押すと、Edit JSON Fragmentが表示されるのでクリックします。

f:id:dais39:20190508215851p:plain

クリックすると、JSON Fragementというviewが表示されます。そこに生のJSONを記述すると、実際のコードの文字列の中でも自動的にダブルクオーテーションがエスケープされた状態でJSONが同時に記述されます。

f:id:dais39:20190508220324p:plain

また、この状態で文字列の中にJSONの文法エラーとなるような記述を書くと以下のようにIDEがエラーを表示してくれるのでとても便利です。

f:id:dais39:20190508220512p:plain

おわりに

今回はJSONのケースを紹介しましたが、SQLでは候補予測や補完が有効になったり、他にもxmlyaml, JPAのJPQLやJiraのJQLなど様々な言語に対応しているので、ぜひ試してみると良いと思います。