emacsのpython-modeでもauto-complete.elを使う

こないだは、R用のauto-complete.el拡張を書いてみたわけですが、ここまで来るとpython開発環境もemacsにしておきたい。
というわけで、どうにか使えるようになったので、まとめてみます。ちなみに当方の環境は32bit ubuntu9.04です。
python開発環境の整備
その前に、python開発環境on emacsの整備から。
実は、emacsとpythonの関係はかなりややこしいことになっていましてemacs21時代はpython-mode.elなるpython-modeが主流だったようなのですが、emacs22ではpython.elなるpython-modeがデフォルトで入ってしまい、かなり混乱している模様。(ref:Python開発環境 (紫藤のWiki))
しかもpython.elはあまりできがよろしくないらしく、あんまり普及してないっぽい。てなわけで、今回は、python-mode.elベースでやってみます。
まずは、pymacsをインストール。ubuntuでは sudo apt-get install pymacsでおk。それ以外の方は、ぐぐってください。
次にpython-mode.elを入れとく。これは多分入れなくてもうまくいくはずなのですが、たいして手間もかからないので入れとく。
python-mode.el project filesから落としてきてload-pathの通ったところに入れておいて~/.emacsに次のように書きます。
[cpp]
(setq auto-mode-alist (cons ‘("\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons ‘("python" . python-mode)
interpreter-mode-alist))
(autoload ‘python-mode "python-mode" "Python editing mode." t)
[/cpp]
ここまでして、いちおベースは完成。次は補完環境を作っていきます。
補完ライブラリの導入
何はともあれ、auto-complete.elを導入。~/.emacsに次のように書きます。
[cpp]
(require ‘auto-complete)
(global-auto-complete-mode t)
[/cpp]
ここからが、ちと大変でした。まずは、こちらで紹介されていたropemacsを使おうかとしたのですが、どうやら現行のauto-complete.el Ver0.2.0ではうまくいかんようです。
てなわけで、さっさと見切りを付けて他の補完ライブラリを探してみるとpysmellなるものを発見。
インストール方法はeasy_installを入れているのであれば、端末でeasy_install pysmellでおk。入れてないときは、落としてきたやつを解凍してできたフォルダの中でpython setup.py installします。
んで、フォルダの中にあるpysmell.elをload-pathの通ったところに入れておいて~/.emacsに次のように書きます。
[cpp]
(require ‘pysmell)
(add-hook ‘python-mode-hook (lambda () (pysmell-mode 1)))
[/cpp]
ここまでくれば、もう少し。お次は補完候補用のファイルを生成するために、.pyを入れるディレクトリより浅いところでPYSMELLTAGS fileを作ります。僕はhomeにいれときました。
これは端末に次のように打ち込みます。
[cpp]
cd /home/hogehoge
pysmell .
[/cpp]
これでpysmellを使った補完ができるようになります。でも、補完するときにM-/押したりしないといけないだの、かなり使い勝手悪いのでauto-complete.elから呼び出せるように~/.emacsに次のように書きます。
[cpp]
(defvar ac-source-pysmell
‘((candidates
. (lambda ()
(require ‘pysmell)
(pysmell-get-all-completions))))
"Source for PySmell")
(add-hook ‘python-mode-hook
‘(lambda ()
(set (make-local-variable ‘ac-sources) (append ac-sources ‘(ac-source-pysmell)))))
[/cpp]
emacs22とemacs23で試してみましたが、問題なく使えそうです。
これで、ちょっと面倒でしたが、auto-complete.elでpythonの関数群を補完できるようになるはず。
python開発環境としてあまり評判の良くないemacsですが、ここまでくるとかなり使い勝手よくなります。
-
前の記事
library(cairo) on ubuntu9.04の設定 2009.05.25
-
次の記事
weekly Digest for May 28th 2009.05.28