2012-03-22 14 views
2

this questionに基づいて、私はemacsのpythonシェルでエコーの問題を解決する方法を発見しました。私がやりたいことは、.emacsファイルにこれを加えて、自動的に起こるようにすることです。Emacs Python:エコー、フック、組織モード

(defun python-startup() 
    (setq comint-process-echoes t)) 

(add-hook 'py-shell-hook 'python-startup) 

私はPythonシェル(M-x python-shell)を起動した場合、これは働いていません。

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 22 
22 
22 

私はM-: (python-startup)でこの機能を実行することができ、その後、エコー動作が停止します。

>>> 22 
22 

私が間違ってフックを設定していた場合、または私は完全に別のフックを使用する必要があるかどうかは知りません。ちなみに、どのようなフックがどのような機能のために呼び出されているかは、どのように知っていますか?最終目標は、すべてのコマンドをエコーする結果を出さずにPythonコードを統合できるように、:results output :sessionをorg-modeで使用できるようにすることです。私はフックを修正すると、それは私が持っている動作ですが、実際にはこれが本当であるかどうかはわかりません。

+0

を使用する必要がある場合Python 2.7.1では、シェルはデフォルトで正しくエコーします。あなたが定義したように 'comint-process-echoes'を設定すると、エコー動作は止まります。上記の重複したエコーを再現することはできないので、バグが他の場所に存在すると思われます。 – MrGomez

答えて

3

私の簡単な調査では、python-mode(私のEmacsにあるように)にはpy-shell-hookがないので、あなたがそこに置くものは当然実行されません。

私がpython-modeを見たとき、それは実行するフックがないので、あなたは少し運がありません。

それだけexmapleのために、独自のコマンドを作るための最善の策:

(defun alex-python-shell() 
    "Start a python shell my way." 
    (interactive) 
    (python-shell) 
    (python-startup)) 

あなたは、対話的にpython-shellを呼び出すのEmacs(23.1.1)の私のバージョンでは

(call-interactively 'python-shell) 
+0

ええと、ちょうど自分自身でPythonを起動するための素晴らしい回避策です。私は思っていますが、 'python-mode'は.pyファイルを見るためだけであり、シェルのためではありませんか?もしそうなら、私はそれがpy-shell-hookまたはそれに類するものを持つとは期待しません。それにもかかわらず、あなたはどこかのフックのリストを知っていますか? – alexplanation

+0

申し訳ありませんが、私はPythonシェルにフックがないことを意味しました。次のようにします:M-x find-function RET python-shell RETを実行し、コード内で実行されるフックを探します。簡単な。 – Eric

関連する問題