Perlでオムニ補完を実現するPlSenseを作りました

これは何?

今までEmacsPerlをコーディングする時は、perl-completion.elを使わせて頂いていました。
perl-completion.elでは、バッファ内で定義されたインスタンスであれば、適切なメソッド補完ができます。
しかし、下記リンクの記事で書かれている通り、コンテキストの特定に力を入れている訳ではないので、オムニ補完という点では不十分なものでした。
また、auto-complete.elのインタフェースよりも、anything.elのインタフェースがメインな作りになっていて、私としてはauto-complete.elのインタフェースをメインにコーディングをしたいと思っていました。

そこで、もっと高精度な補完やヘルプ参照を提供するPerlモジュールと、その機能をauto-complete.elベースで利用することができるplsense.elを作りました。

特徴

コンテキストに合わせた補完候補の表示

ポイントしているコンテキストが利用しているソースファイルを解析し、適切な補完候補を割り出します。
コンテキストの特定は、メソッドの引数/戻り値、配列/ハッシュ/リファレンス要素があっても可能です。
特定できるコンテキストには以下があります。

  • 変数
  • インスタンスメソッド
  • クラスのイニシャライザ
  • use/requireモジュール
  • use/requireするモジュールに渡すLIST要素
  • ハッシュキー

f:id:aki2o:20130726012035p:plain

ヘルプ表示

表示された補完候補やポイントしている要素についてのヘルプを、ポップアップ表示したり別ウィンドウに表示したりできます。
対象が変数やメソッドの場合は、PerlDocから該当箇所を抜き出します。

f:id:aki2o:20130726012131p:plain

メソッド情報表示

eldoc.elを用いて、ポイントしているメソッド情報をミニバッファに表示します。

f:id:aki2o:20130726012202p:plain

デモ

インストール/設定

以下をインストールする必要があります。

  • PlSense
  • plsense.el

PlSense

ソース置き場: https://github.com/aki2o/plsense

Perlモジュールです。
設計思想に関してRSenseに影響を受けています。
インストール/設定については以下を参照して下さい。

https://github.com/aki2o/plsense/blob/master/README-ja.md

plsense.el

ソース置き場: https://github.com/aki2o/emacs-plsense

インストール/設定/使い方については以下を参照して下さい。

https://github.com/aki2o/emacs-plsense/blob/master/README-ja.md

その他

Enjoy!!!

リンク