2013の34日目の記事です。速度改善の目的でfile_include的な挙動を実装しましたので、今日はその話をしたいと思います。unite-javaimportモチベーションjavaのインポート可能なクラスの数というのは、どうしても巨大になります。最低限、jdk標準ライブラリに含まれるpublicクラスだけと考えたとしても、1万クラス以上あります。何かしらの回避策を用意する必要がありました。lingrのvim部屋で何か良い方法は無いかと質問を投げたところ、file_include的な挙動にすれば表示する候補数を絞れるんじゃないかと有り難い指摘を頂きました。実装方針javaのインポートの仕組みを考えてみます。基本的にインポート可能なクラスは、publicなクラスのみです。publicなクラスにネストしたpublicなクラスもインポート可能です。クラスはパッケージで修飾することが推奨されます。これらの事実から、方針を以下のように定めました。以上の仕様にすることで、表示され得る候補数を、最大で数千程度まで減らすことができます。worldを回避できそうです。実装方法では、早速本題であるところのfile_include的な挙動の実装方法について書いていきたいと思います。パッケージ名の列挙用のunite-kindを作成します。名前は適当にexpandableとしました。s:action_expand続いて、unite-javaimportのgather_candidates()から返却するcandidateのkindを、expandableにします。クラス名の列挙の際には、kindは今まで通りjavatypeとします。endifendfunctionまとめ以上、説明のための簡易的な実装でしたが、これでunite.vimでfile_include的な挙動が実装できました。候補数が巨大になってしまうようなunite-sourceも、これで便利できますね。以上でVAC2013の34日目の記事を終わります。upLoginユーザーは見つかりませんでした。