最近 Python を書くことが多いんだけど、やっぱり補完してくれないと寂しい。ということで Emacs で Python の補完をするには、と調べていて、定番らしい auto-complete + python.el を試してみたんだけど、俺の環境ではどうも上手く動いてくれない(裏で動く Python との連動が上手く動いてないっぽい?)。他にないかなぁ、と探したところ jedi がいいらしい的にな記事を見かけたのでこれにチャレンジ、しようとしたらインストール方法がさっぱり…。
で、どうやら el-get っつー Emacs 用のパッケージマネージャっぽいものを入れると簡単に jedi が入るらしいので、それを試すことにしました。
インストール自体はそんなに難しくはなく、 README に書いてあるように適当なバッファ(*scratch* とか)に下記コードのどっちか(上が Stable 、下が Current っぽい?)を貼付けて M-x eval-print-last-exp
とかやるだけ(M-x eval-buffer
で動いたけどね)
(url-retrieve "https://raw.github.com/dimitri/el-get/master/el-get-install.el" (lambda (s) (goto-char (point-max)) (eval-print-last-sexp)))
(url-retrieve "https://raw.github.com/dimitri/el-get/master/el-get-install.el" (lambda (s) (let (el-get-master-branch) (goto-char (point-max)) (eval-print-last-sexp))))
インストールのポイントはココロを強くもつこと(笑)。インストールはあちこちのサイトから必要なファイルを拾ってきてローカルに配置してるっぽいんだけど、その動きの中のうち、 www.emacswiki.org への接続に時間がかかる! というか
connecting host: www.emacswiki.org:80
とか表示された後で固まるので、刺さってると思って Emacs を何度か強制終了して立ち上げ直し、とかやってたんだけど、実は時間がかかってるだけなので放置しておけば良かったという…。
ちなみにそもそも入れたかった jedi はまだ stable には入ってないみたいで、 current を入れる必要がありました。
あとは ~/.emacs.d/init.el にインストールに応じた
(add-to-list 'load-path "~/.emacs.d/el-get/el-get") (unless (require 'el-get nil 'noerror) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (goto-char (point-max)) (eval-print-last-sexp))) (el-get 'sync)
(add-to-list 'load-path "~/.emacs.d/el-get/el-get") (unless (require 'el-get nil 'noerror) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (let (el-get-master-branch) (goto-char (point-max)) (eval-print-last-sexp)))) (el-get 'sync)
を追加してあげて
M-x el-get-install
でインストールしたいパッケージ(今回は jedi )を入力すればいいみたい。
依存するパッケージも勝手にインストールしてくれるので楽なんだけど、その反面、 Emacs が面倒みてるところしか面倒見ない(当たり前だ)ので、パッケージが必要とするプログラムは自分で入れなきゃいけないってところは注意しなきゃいけないかなー(エラーメッセージは表示されるので大丈夫だろうけど
しっかしデフォルトのインストール先が ~/.emacs.d/el-get ってあたり、時代は変わったんだなぁ、とかしみじみ(笑