taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

Emacsのflymakeでcarton+plenvな環境でも無理矢理@INCを通す

 なんか最近Perlづいてます。今日は環境周り(Emacs)。
 久々にちゃんとflymake使おうと思ったので、karupaneruraさんの作成したplenv.elを使って、plenvで構築したperlバイナリでチェックかけるようにしました。ただこれだけだと、cartonでインストールしたモジュールに対してパスが通ってなくて、エラー扱いになるっぽいんですよね。。。
 なので、以下のようなelispを追加しました。再帰的にパスを辿ってファイルを見つける、という処理は
 → Rakefileを再帰的に探してrake testするelisp(TB) - trotrの日記
こちらのエントリにあるRakefileを見つける関数を使わせてもらいました(ありがとうございます><)。

 elisp全然慣れてないとかもあって相当力技ですが、cartonとcpanfileの有無をチェックして、cpanfileとcartonがあるときはcarton execを使って、それ以外は通常どおりguess-plenv-perl-pathで出てきたバイナリを使う、という流れです。絶対どっかで無駄なことしてるだろうな。。。探索し過ぎだし。PERL_CARTON_PATHも使ってるから、carton execする意味が本当にあるのか謎だし。ということで、elisp書ける人はもっとキレイに書いていただきますよう、宜しくお願いします。あと、関数の名前空間汚したくないので、myenv-〜とか適当に入れて書くようにしてますが、この辺って今は何がナウい書き方なんだろ。。。