jediとはemacsでpython編集時に、入力のautocomplete(自動補完)を行なってくれるemacs lispです。簡単な設定でemacsに強力で、高速な自動補完環境を構築出来ます。
emacsでpythonだと、python.elやら(また別の)python.elやらpython-mode.elやらac-python.elやらと混在して、全部入れると、一体どれが正常に動いてるのやら確認するのも嫌になります。どれもネーミングが悪すぎる。
今回紹介する、jediもネーミングがよくわからないのですが、統一的な仕様になっているので使いやすいかもしれないと思ったからです。
主な参考サイト :
- ここがメイン2012-10-21 関西Emacsにいってきた
- 補助的2013-04-15 emacs-jedi で Emacs の Python のオムニ補完をする場合のメモ
- 補助的2012年11月13日 Emacs で Python の補完を強化する jedi を設定してみた
- 記事JEDI: A COMPLETION LIBRARY FOR PYTHON by mickey on January 10th, 2013
install
まずは、jedi関連のファイルをgitする場所を掘って、移動しておきます。
(私は、.elは全部用途別にファイル分割して、それをinit.elから読みに行っております。新しいパッケージはsite-lisp以下にパッケージごと(用途別じゃないのかい!)に整理しています。ご自分の環境では好きにしてください。)
mkdir ~/.emacs.d/site-lisp/jedi
cd ~/.emacs.d/site-lisp/jedi
ここで、gitからcloneしてきます。
git clone git://github.com/tkf/emacs-jedi
git clone git://github.com/kiwanami/emacs-deferred
git clone git://github.com/kiwanami/emacs-epc
git clone git://github.com/kiwanami/emacs-ctable
次は、virtualenvとかよくわからないのですが、次の呪文をemacs-jediで実行する必要があるようです。virtualenvやらpipがない人は、先にそちらをinstallする必要があります。
cd ~/.emacs.d/site-lisp/jedi/emacs-jedi
virtualenv env
source env/bin/activate
pip install jedi epc
設定
それが済んだら、ロードパスの通っているファイル(.emacs.d/init.elでもいいですし、私は.emacs.d/input-utils.elです)に以下を書き込みます。
auto-completeのセッティングの後に読み込まれるように書かないといけません。
(add-to-list 'load-path "~/.emacs.d/emacs-deferred")
(add-to-list 'load-path "~/.emacs.d/emacs-epc")
(add-to-list 'load-path "~/.emacs.d/emacs-ctable")
(add-to-list 'load-path "~/.emacs.d/emacs-jedi")
(require 'auto-complete-config)
(require 'python)
(require 'jedi)
(add-hook 'python-mode-hook 'jedi:ac-setup)
(define-key python-mode-map (kbd "<C-tab>") 'jedi:complete)
私はこれでうまく行かず、試行錯誤の結果以下で落ち着きました。
;;;この上にはpath設定やらsuto-completeの設定
(require 'jedi)
(add-hook 'python-mode-hook 'jedi:setup)
;;これを入れるとjediを手動<C-tab>で立ち上げないといけない。
;(setq jedi:setup-keys t)
(setq jedi:complete-on-dot t)
使い心地
python-modeよりはいい気がします。関数のヘルプが速いのに驚きました。