IntelliJ Plugin 「kotlin-fill-class」の現在
この記事は suusan2go Advent Calendar 2019 - Adventar の12日目の記事です。
kotlin-fill-classとは
自分が趣味で作っていたIntelliJ IDEAのPluginで、Kotlinのコンストラクタを(実は今は関数の引数も)シュッと補完してくれます。
実際に見ていただくとどんなものか分かるかと思います
Kotlin Festのなかでも発表させていただきました。
公開されたあとも地味に色々と機能が追加されているので、このブログではその紹介をします。
kotlin-fill-classの現在
独自クラスでも再帰的にコンストラクタを埋められるようになりました
これまではInt, Stringなど組み込みの型については自動で埋められていたものの、 例えば以下のようなValue Objectを用いたユーザー定義クラスの型は値を埋めることができませんでした。
data class UserName(val value: String) data class UserId(val value: Int) data class User( val id: UserId, val name: UserName ) user = User(id: , name: ) // fill constructorしても値は空欄になってしまっていた。
それが、現在は以下のように再帰的に独自クラスのコンストラクタも呼んで値を埋められるようになりました。
以下のプルリクで対応されました。
関数の引数も値を埋められるようになりました
kotlin-fill-class
という名前の通り、もともとはコンストラクタをターゲットにしていましたが、なんと現在は関数にも対応しています。
以下のプルリクで対応しています。
もはや kotlin-fill-class
という名前でいいのかという感じになってきましたが、なんかいい名前ください。
import分も自動で追加されるようになりました
これはコンストラクタにユーザー定義のクラスを含んでいた場合に、自動でimportされるようになりました。 github.com
テストが追加されました
ユーザーからすると関係ありませんが、テストが追加されました。以下のプルリクでCircleCI回していますが、テスト書いてくれたのは @t-kameyama さんです。
その他
補完されても嬉しくない箇所で補完されていた箇所など、ちょっと使いにくかったところが改善されています。
謝辞
プルリク見ていただくと分かりますがこの辺の大きな機能追加や細かな改善は自分ではなく、@t-kameyama さんという方がやってくれています。もはや自分のコードは殆ど残ってなくて、自分がやってるのはIdeaのバージョンがあがったときに動作確認してプラグインの依存を上げるのと、チェンジログを書いてJetBrainsに公開するくらいです。@t-kameyama さん、PR頂いたときにお礼を言うくらいしか出来てませんが本当にありがとうございます!!!!!
@t-kameyama さん以外にも、 IntelliJがアップデートされたタイミングで「サポートしてくれーーー」ってIssueを上げてくれる人や、プルリクを上げてくれる人がいて嬉しい限りです。顔も名前も知らない、なんなら国も違う人が自分の作ったものをガンガン改良していってくれてるの、凄い。普段利用者としては正直あまり意識していないけど、OSSってすげーなとPRやIssueもらうたびに思います。
残念ながら最近は仕事でKotlin書いていないので機能面での改良はなかなか思いつきませんが、今後もほそぼそとメンテナンスしていきます。今後ともkotlin-fill-classをよろしくお願いいたします。