pickup.el書いた
emacsでvirtualenvとbuildoutでツクッタpythonを呼ぼうとするときに必要になった。
考え方は単純で「現在の位置から親を再帰的にたどり望みのパスのコードが無いか調べる」というもの。
例えば
cwd = ~/venv/foo/bar/boo/bee/boo.py
を編集している時、おそらくvirtualenvのpythonは
~/venv/foo/bin/python
これは
~/venv/foo/bar/boo/bee/bin/python ~/venv/foo/bar/boo/bin/python ~/venv/foo/bar/bin/python ~/venv/foo/bin/python ~/venv/bin/python ~/bin/python ...
と探していけば良い。あったらそのパスを返す。
buildoutでツクッタ場合これだけでは足りない。
~/venv/foo/deploy/dev/bin/python
などにあったりするため。 こういうのに対応するために、".pickup"という間接参照的なファイルを用意する。 これを~/venv/foo/.pickupなどにおいておく。
(("bin/python" . "./deploy/dev/bin/pyhon"))
.pickupには等と書いておく。