関西Emacsにいってきた

いまHatena Blog見てそういえばEmacs温泉の詳細書くとか言って忘れてたらもうその次の関西Emacsでした。すんません。
今日は関西Emacsに参加してました。
その感想をつらつら書くとともに今日デモした @tkf さんのemacs-jediのいんすこ方法などを詳しく書きます。

@oarat さん

今日のハイライトだったかもしれん。
term+.elの紹介。
よさげに思う。とにかく使ってみてtwitterで思うところを言うていこうと思う。
term+.elの中でipythonがいい感じに使えるかどうか試そうと思う。

@syohex さん

websocket.elの紹介。
第六回 関西 Emacs勉強会に参加してきました。 を参照されたし。
web application frameworkにPerlのamon2というのを用いてはったのを今はRubysinatraにreplaceしようとしてくれているらしい。
それは歓迎すべきことであろう。

@kiyoka さん

pastehubの紹介。
demoのため自分の手元の環境いじってたためちゃんと聞いてなかった。申し訳ありません。
syohexさんのはてブエントリを参照されたし。

@uk_ar さん

githubのelisp projectにTravis CIを使う話。
自分はtestまともに書いたことないlevelなのでまったく実感できてない。
精進する必要がある。

おれ

以下demoしたemacs-jediのel-getを使わない いんすこ方法を書く。
MacとUbuntuではこれでうまく補完できることを確認した。Windowsでもできそうに思う。
jediについては mattnさんのblogエントリ を参照されたし。
これまでのEmacsPython補完libraryのdisりはやめておこう。とにかく(emacs-)jediはよいと思う。

emacs-jediのいんすこ方法(設定は後述する)

emacs-jediはkiwanamiさんproductを活用していて、設計がすっきりしている(ように思う)。
kiwanamiさんのproductのすばらしさがわかる。その点でも使用をおすすめしたい。

  • auto-complete
  • concurrent.el
  • epc.el
  • ctable.el

emacs-jediは上記のelispに依存していてこれらが必要である。
auto-complete以外は現時点ではmelpa packageには無いのでgithubからcloneする。
auto-completeはpackage.elでinstallするのがよいかと思う。

cd ~/.emacs.d
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

jediのいんすこ方法

どうもtkfさんがvirtualenvの使用を想定されている模様アンドvirtualenv使って損ないのでvirtualenvを使おう。
pipとvirtualenvはsudoでinstallしてよいと思う。
easy_installは最近のMacでは最初から入っている。ubuntuではsudo aptitude install python-setuptoolsでよいのでは。

sudo easy_install pip
sudo pip install virtualenv

emacs-jediはdefaultではvirtualenvの環境をemacs-jedi自身のdirectory下にenvという名前で作ることを想定しているようだったので
git cloneしたemacs-jedi下にvirtualenv環境を作りここでPythonのjediとepcをinstallする。 この環境を任意の場所に設定する方法は知らない。

cd ~/.emacs.d/emacs-jedi
virtualenv env
source env/bin/activate
pip install jedi epc

emacs-jediの設定

(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)

emacs-jediの使い方と評価値の補完

上記ではauto-completeを設定しているつもりだがいまいちauto-completeできてんのかよくわからなかった。
jedi:completeでの補完であれば動作を確証できる。
このjediのよいところはmattnさんが仰っているように単なるmoduleのfunctionの補完だけでなく、評価値の補完ができることと思う。
例えば

f:id:kozo2:20121021044703p:plain

のように。
しかし今日のdemoでこれを下記のpointで補完しようとすると補完できなかった。
調査してみようと思う。意見があれば頂きたい。

f:id:kozo2:20121021050629p:plain

おわりに

今回の関西Emacsも面白かった。 全発表者と、取りまとめをやってくださった@pecculさん、会場を使わせてくださった@uwabamiさん、参加者のみなさんに感謝したい。
またjediやemacs-jediの作者さんにも感謝したい。

jediは今自分がPythonのmeta programmingに興味をもっていることもあり面白そうに思うし、その構成がすっきりしているように思う。

またemacs-jediもこれまでのPythonemacs interfaceと比較しすっきりしているように思う。
kiwanamiさんのemacsのための要素技術とtkfさんのそれら要素技術を組み合わせるセンスがうまく融合しているのではなかろうか。

構成は以下の理解でよいのではないかと思う。

f:id:kozo2:20121021052058p:plain

それでは次回4月の関西Emacsでまた会いましょう。