MacOSX10.4以降の場合はこちら『Carbon Emacs の Python インタプリタで - 牌語備忘録 - pygo』
MacOSX10.3でPythonを2.5.1にアップデートして、Carbon EmacsでPythonのinterpreter を動かしてみたらPython2.3が起動してる。
ターミナルからPythonを呼ぶと2.5.1が動く。
なぜかEmacsとターミナルで挙動が違う。
bashの設定がおかしいのかと思ったけど、どうやら違うらしい。
下記サイトに解決策が。
.cshrcや.bashrcとかにPATHの設定しても Carbon Emacs はPython2.3を呼ぶので、別の手段で解決させる。以下手順。
ホームディレクトリに~/.MacOSX/environment.plistを作り、PATHを設定を書き込む。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>PATH</key> <string>/opt/local/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin</string> </dict> </plist>
これでCarbon EmacsからPython2.5が使えるようになる。
で前述サイトによればpycompleteで補完機能もつかえるようになるとのこと。
しかし補完できない... Why? なぜに?
.emacs.elに記載したpython-mode設定を消してemacsを立ち上げ直したら、補完機能が使えるようになった。
よくよく調べたらpython-mode.elとpython.elというのがあるらしい。
Carbon Emacsのデフォはpython.elみたい。
python.elには補完機能がある(pycompleteとは別っぽいのか?)
若干機能が違うので使いづらい感あるけど、補完やテンプレートとかあるしpython.elを使うことにしよう。
やっぱり訂正、補完機能がきかなくてもpython-mode.elのが使いやすい。
pymacsとか補完の設定が面倒なのでemacs標準のpython.elのほうのpython-mode使うことにした
python.elはインデントがきかず改行すると毎回行頭にカーソルいくので、これだけは直したい。
ググってみると、C-jのキーバインドでインデントするみたい。
しかし、普通にリターンキーでやりたいので.emacs.elに下の設定を追加。サイトにあったのをまるまるコピペ。
(add-hook 'python-mode-hook '(lambda () (define-key python-mode-map "\C-m" 'newline-and-indent)))
最後にもうひとつ問題が。
Djangoのチュートリアルでつかうmodels.pyで補完機能を使うと、永久ループしてEmacsがフリーズ状態に。
from django.db import modelsの一行に問題があるみたい...
とりあえず保留。
(2008春版のCarbon Emacsでは問題なかった。なぜかしらん)