読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

MacOSX 10.3 とCarbon Emacsとpython-mode

MacOSX Emacs Python

MacOSX10.4以降の場合はこちら『Carbon Emacs の Python インタプリタで - 牌語備忘録 - pygo


MacOSX10.3でPythonを2.5.1にアップデートして、Carbon EmacsPythoninterpreter を動かしてみたら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では問題なかった。なぜかしらん)