新言語を使うときは、その言語の補完ができるかどうかで学習効率が変わってくるので、ひとまずPythonの補完環境を作った。基本Pythonではvirtualenvを使うのが一般的なようなので、環境ごとに入れたライブラリも考慮して補完できるようにした。
色々調べたところ、次の三つを使うのが良さそうだった。
- python-mode
- jedi
- auto-virtualenvwrapper
今回の設定で以下のように補完が出来るようになった。
python-mode
とりあえず編集モードを入れる。M-x package-install RET python-mode RET
したあと、以下の設定を入れる。
(require 'python-mode) (setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist))
jedi
Pythonの補完なら、Jedi というのが良さそうに見えた。Emacsでの入れ方は http://tkf.github.io/emacs-jedi/latest/ に書かれていたので、このページに従ってインストールした。
まずvirtualenvを自分がメインで使っているPython環境に入れる。
$ pip install virtualenv
Emacsにjedi.elを入れる。
M-x package-install RET jedi RET
以下の設定を追加する。
(require 'jedi) (add-hook 'python-mode-hook 'jedi:setup) (setq jedi:complete-on-dot t)
最後にM-x jedi:install-server
して完了。
auto-virtualenvwrapper
以上でPythonの補完が出来るようになった。しかし今のままだとグローバルなPython環境のみ見て補完してくれるだけだった。Pythonではプロジェクト単位でvirtualenvを用いるのが一般的なようなので、virtualenvの環境にインストールしたライブラリも見て補完できるようにしておきたい。
それを実現するには virtualenvwrapper.el というのを使えば良いみたい。さらに auto-virtualenvwrapper.el というのを使うと、プロジェクトのファイルを開いた時に自動でvirtualenvの環境を切り替えてくれるようだった。
まずはvirtualenvwrapper.elとauto-virtualenvwrapper.elをインストール。
M-x package-install RET virtualenvwrapper RET M-x package-install RET auto-virtualenvwrapper RET
以下の設定を追加すると、自動でvirtualenvの環境を切り替えてくれるようになる。
(require 'virtualenvwrapper) (require 'auto-virtualenvwrapper) (add-hook 'python-mode-hook #'auto-virtualenvwrapper-activate)
まとめ
今回の設定で、virtualenvにいれたライブラリも考慮したPythonの補完環境を作れた。ここにたどり着くまでに結構時間がかかってしまったけど、補完がうまくいくようになって良かった。