2011-08-16 6 views
1

新しいフレームにPythonインタプリタ(IPython)を起動し、IPythonインタプリタで前のバッファの内容を実行するELisp関数を記述します。私はEmacs 23.3.1、python-mode 6.0、ipython.elを使っています。 Emacs Lisp:新しいフレームを開き、IPythonを起動し、前のバッファを実行します。

はここで、これまでの私の機能です:

  1. IPythonが正常にpy-shell経由で開始します:

    (defun python-run() 
        "Use to run Python programs." 
        (interactive) 
        (let (my-buffer-name buffer-name) 
        (select-frame (make-frame)) 
        (set-frame-size (selected-frame) 90 60) 
        (py-shell) 
        (delete-other-windows) 
        (switch-to-buffer my-buffer-name) 
        (py-execute-buffer))) 
    

    出力は、ということです。

  2. フレームにはまだ2つのウィンドウがあります。希望するウィンドウはありません。それが正常にバッファを実行していない
  3. 、出力は次のようになります。
 
In [1]: execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368Zoi.py') # PYTHON-> MODE 
--------------------------------------------------------------------------- 
IOError         
Traceback (most recent call last) 
/Users/ben/ in() 
----> 1 execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368Zoi.py') # PYTHON-> MODE 
IOError: [Errno 2] No such file or directory: '/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-> /python-26368Zoi.py' 
In [2]: ## working on region in file /var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-> 26368fXv.py... 
execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368fXv.py') # PYTHON-MODE 
File "/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368fXv.py", line 1 
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
    ^
SyntaxError: invalid syntax 

単一のウィンドウやバッファのいずれかを取得する方法上の任意の考えを実行しますか?ありがとう!

答えて

0

Pythonの出力についてはわかりませんが、elispコードではmy-buffer-nameに何も設定していません(これはnilになります)。次のようになります。

(let ((my-buffer-name (buffer-name)) 
    .... 
+0

ありがとうございます。それは今の作品のようなものです。最初にpython-runが呼び出されたとき、py-execute-bufferを実行しようとすると失敗しますが、次回は動作します。 – Ben

関連する問題