PySmellでTextMateにPythonコードの補完機能を付与する.

pysmell - Google Code


PySmellはVimEmacs, TextMatePythonスクリプトを書く際に補完機能を提供してくれる.ほとんどのIDEは関数等の補完機能を有しているが,TextMateにはこの機能がなかった.スニペットは強力だが,補完機能使いたさにIDEに環境を移行せざるを得ないというのは悩みどころ.しかし,PySmellによってTextMateに補完機能が付与されることでIDEに優るとも劣らない開発環境となったのではないだろうか……と素人な俺が言ってみる.短かいスクリプトしか書いたことがないのでIDEほどのごつい環境(多機能性)の恩恵を受ける必要性を感じずIDEを使わないので,軽量エディタ指向というのはあるかもしれない.

インストール〜設定

Macにインストールする際には easy_install を用いて,

sudo easy_install pysmell

またソースから入れる場合は:

Python Package Index : pysmell

からソースをダウンロードしてインストールする.
設定等は上のGoogle Codeページやソースを解凍したフォルダにあるREADMEに書かれている(両者とも同じもの).TextMateの場合はeasy_installでインストールしたとしても,PySmell.tmbundleも必要なため,ソースコードの圧縮ファイルもダウンロードする必要がある.READMEと共に同梱されており,PySmell.tmbundleをダブルクリックすればおk.


そして Preference -> Advanced -> Shell Variables に TM_PYTHON を追加する.
TM_PYTHONの値はpysmellをインストールしたpythonインタプリタのパスを入力する.
今回は,

/usr/bin/python

デフォルトでは Alt + Esc でコード補完となるが,Bundle Editorから変更可.

使い方

ちょっと説明が前後してしまうが,PySmellを使用する際には予めタグ情報ファイルを作っておかないといけない.


まず,補完を行いたいコードの(を含むプロジェクトのルート)階層で,

pysmell .

としてPYSMELLTAGSファイルを作成する.
次に,標準ライブラリの関数を補完出来るようにする.
標準ライブラリのフォルダに移動してpysmellを実行する.

cd /opt/local/lib/python2.5
pysmell . -x site-packages test -o ~/PYSMELLTAGS.stdlib

とすることでホームディレクトリにsite-packagesとtestフォルダを除くファイルを解析した結果がPYSMELLTAGS.stdlibとして出力される.これを先に作成したPYSMELLTAGSと同じ場所にコピーすればおk.


簡単に使ってみた感じとしては,標準ライブラリ全部はちょっと補完候補が多くなりすぎかな……という気がする.それに多少もっさり感もある.これが問題になるなら,標準ライブラリの中でも必要なもの(インポートするもの)のみ解析しておく方がいい気がする:-P


そういえば,ビルトイン関数のソースコードってどこにあるんだろう……?
理想的にはIPythonのような補完で候補をリアルタイムにリストアップしてくれる機能が欲しい.